【发布时间】:2019-10-10 12:07:13
【问题描述】:
我正在尝试使用字符 @ 作为标记来提取字符串中两次出现的子字符串之间的文本。我知道@有 8 次出现。我想遍历主字符串,并将子字符串写入工作表。
虽然我为字符串 textBetween 提供了一个 Dim 表达式,但我得到了错误消息“错误消息“对象变量或未设置块变量”。我不知道为什么。
代码来自excel vba- extract text between 2 characters,应该很简单吧?好吧,不适合我!
我已经摆弄了几个小时,没有结果。
Sub FindStrings()
Dim sheet2 As Worksheet
Dim i As Integer
Dim openPos As Long
Dim clsPos As Long
Dim textBetween As String
openPos = 0
'Using for loop to find the i th occurrence of at '@' for openPos
For i = 1 To 8
'get position of start of string
openPos = InStr(openPos + i, sheet2.Range("H8"), "@", vbTextCompare)
'Error msg "Object variable or With block variable not set
'get position of end of string
clsPos = InStr(openPos + 1 + i, sheet2.Range("H8"), "@",
vbTextCompare) 'End of string
'get the mid string value between openPos and clsPos
'
textBetween = Mid(sheet2.Range("H8").Value, openPos + 1, clsPos -
openPos - 1)
MsgBox ("textBetween " & "i" & textBetween)
'write to sheet
sheet2.Cells(7 + i, 8).Value = textBetween
Next i
End Sub
我希望将字符串写入工作表。错误消息是:“错误消息“对象变量或未设置块变量”
【问题讨论】:
-
您有
Dim sheet2 As Worksheet,但从未将工作表分配给该变量。 -
您需要先设置/创建
sheet2对象才能使用它。 -
如果您只需要在
@上拆分字符串,那么Dim arr: arr = Split(sheet2.Range("H8").Value, "@")会这样做。