VBA:无效的限定符
我的vba代码应该组织一张我刚刚从PDF中粘贴Excel的资产负债表。 因此,像大多数资产负债表一样,项目(资产/负债/等)的描述以及正在分析的年份的值。
首先,我试图确定文本在哪个位置结束。 所以我写了下面的代码,这是给我和错误(无效的限定符)。
Dim subjectCell As String Dim letters As String Dim index As Integer letters = "qwertyuiopasdfghjklçzxcvbnmQWERTYUIOPASDFGHJKLÇZXCVBNM " subjectCell = ActiveCell.Value For i = 0 To Len(subjectCell) - 1 If (letters.Contains(Mid(subjectCell, i + 1, 1))) Then Else index = i Next i Cell("A1").Value = index
Sub test() Dim subjectCell As String Dim letters As String Dim index As Integer letters = "qwertyuiopasdfghjklçzxcvbnmQWERTYUIOPASDFGHJKLÇZXCVBNM " subjectCell = ActiveCell.Value2 For i = 1 To Len(subjectCell) If InStr(1, letters, Mid(subjectCell, i, 1), vbTextCompare) = 0 Then index = i Exit For End If Next i Range("A1").Value2 = index End Sub
这里有几个问题
- 没有结束,如果你的if语句
- 你的单元格应该是
range
如果你正在定义一个范围如A1,单元格为1,1types的引用 - 使用ActiveCell是不好的forms,明确地定义它
- 使用
Range("A1").Value
是更好的,但也是差的forms,完全定义它像workbooks("book1.xlsx").sheets("Sheet1").Range("A1").Value
- 你不能使用
letters.function(
inputvba,我已经说明instr
(或string)来显示这可以如何工作到类似的效果。
我已经改变你的代码,以更好地说明它应该是什么样子:
Sub g() Dim subjectCell As String Dim letters As String Dim index As Integer letters = "qwertyuiopasdfghjklçzxcvbnmQWERTYUIOPASDFGHJKLÇZXCVBNM " 'subjectCell = ActiveCell.Value subjectCell = "a" For i = 0 To Len(subjectCell) - 1 If InStr(letters, subjectCell) > 0 Then Debug.Print "Found it! It starts at position: " & InStr(letters, subjectCell) Else Debug.Print "No Match" index = i End If Next i Range("A1").Value = index End Sub