vba 比较两个字符串时类型不兼容

vba types incompatible while comparing two strings

我想将来自两个不同工作表的两个字符串与 excel 中的 vba 进行比较。已经编写了以下代码:

Public Sub Vergleich_Arbeitsmappen()
Dim i As Long
Dim projectCounter As Integer
Dim strAngNr As String
Dim strCodename As String



Dim wks As Workbook

strAngNr = Range("C3").Value
strCodename = Range("C4").Value
projectCounter = 200

Set wks = Workbooks.Open("filename")

For i = 2 To projectCounter
    
    If CStr(Workbooks(wks).Worksheets("Tabelle2").Cells(i, 2).Value) = strAngNr Then
        MsgBox "FEHLER"
        
    End If
Next i

End Sub

但是在调试时,excel 总是显示错误“类型不兼容”,即使两个值都是定义的字符串。

您的问题不是来自您正在比较的 2 个字符串,而是来自 Workbooks- 集合中的无效参数。
由于您的工作簿对象已存储在 wks 中,您只需编写

wks.Worksheets("Tabelle2").Cells(i, 2).Value

您使用 Workbooks-Collection 按名称或按索引访问打开的工作簿,因此工作簿中的参数是字符串或数字(理论上您可以编写 Workbooks(wks.Name),但这完全没有用。

您正在传递类型为 Workbook 的对象作为参数,但失败并给您“类型不兼容”错误。