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 

这里有几个问题

  1. 没有结束,如果你的if语句
  2. 你的单元格应该是range如果你正在定义一个范围如A1,单元格为1,1types的引用
  3. 使用ActiveCell是不好的forms,明确地定义它
  4. 使用Range("A1").Value是更好的,但也是差的forms,完全定义它像workbooks("book1.xlsx").sheets("Sheet1").Range("A1").Value
  5. 你不能使用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