2

私はExcelVBAの関数を使用しており、セルの長い文字列からデータを抽出しています。

この機能を使っています

Function name(cell As Range) As Double

Dim Textstrng As String
Textstrng = cell.text
name = InStr(1, Textstrng, "UpgradeApprovalCode=")
End Function

文字列内で約8000文字以内の場合UpgradeApprovalCode=、7000のように結果が表示されます。ただし、最初の10000文字近くのように遠くにある場合、#VALUE!,結果は表示されません。

それで、検索文字の制限や、これを克服する方法はありますか?私はoffice2007を使用しています。

4

3 に答える 3

5

Valueではなく、プロパティを使用してみてくださいText

すなわち

Textstrng = cell.Value

編集:

Sub main()
Dim cell As Range
Dim sh As Worksheet
Set sh = ActiveSheet
Set cell = sh.Cells(1, 1)
Call GetName(cell)
End Sub

Function GetName(cell As Range) As Double

Dim Textstrng As String
Textstrng = cell.Value
GetName = InStr(1, Textstrng, "UpgradeApprovalCode=", vbTextCompare)
End Function
于 2012-06-17T06:28:14.183 に答える
0

各セルには、Value、Value2、Text、およびFormulaの値があります。ValueとValue2は最大32Kを取得できますが、テキストは8221の長さに制限されます。数式の長さはこれより長くすることができますが、8192文字を超えると、XLSB形式でのみ保存できます。私はその公式を見たくありません!

于 2012-12-12T19:40:22.547 に答える
0

セルに 32k 文字で表示するための制限 (すべてが表示されるわけではありませんが、セルには表示されます)。

VBA に関する限り、文字列の長さは 2GB (要素の 32 ビット符号付き long 数) にすることができます。したがって、この問題は確かに VBA の制限ではありません。

したがって、D.Brett の .Value の回答は、テキストだけでなく、実際にセルにあるものを示しています。

于 2014-07-02T23:57:52.290 に答える