如果声明在工作表范围

时间:2017-06-29 13:31:43

标签: excel vba if-statement

我正在写和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

2 个答案:

答案 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方法。