我正在写和Excel VBA if语句,但我无法弄清楚它为什么不起作用。
我有一张名为“Data”的工作表,我想检查第一列中的某些变量是否与我的ActiveSheet第2行B列(数字2)相同。我使用下面的代码自动结束,因为它不起作用。有人有想法吗?
示例:
Sub test()
If Sheets("Data").Range("I:I") = ActiveSheet(2, 2) Then
MsgBox ("Yes")
Else
MsgBox ("No")
End If
End Sub
答案 0 :(得分:2)
如果要验证该列中的每个项目,您应该在列I
中创建一个循环;一旦找到不匹配的值,就使用标记进行拯救,以便在您已经知道结果后避免遍历所有单元格:
Dim x as long, result As Boolean
result = True
For x = 1 to 100 'let's say up to row 100
If Worksheets("Data").Range("I" & x).value <> ActiveSheet.Cells(2, 2).value Then
result = False
End If
If Not result Then Exit For
Next x
If result Then
MsgBox "Yes"
Else
MsgBox "No"
End If
答案 1 :(得分:1)
您将整列(即1048576值)与单个值进行比较,这显然不起作用。此外,如果要访问特定单元格,则必须使用工作表的单元格集合,即ActiveSheet.Cells(2,2)
如果要单独比较第I列中的每个单元格,请使用循环。如果您只想知道搜索值是否存在于列中的某个位置,则可以使用Range.Find方法。