2017-06-29 64 views
0

我正在編寫和Excel VBA if語句,但我無法弄清楚它爲什麼不起作用。如果表單上的聲明爲

我有1個工作表稱爲「數據」,我想檢查列I中的某些變量是否與我的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

如果要驗證該列中的每一個項目,您應該創造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 
+0

非常感謝,最後我不需要MsgBoxes,只是看看if語句中會發生什麼。 – Tox

1

你有一個比較整體柱(即1048576個值)價值顯然不起作用。此外,如果要訪問特定單元格,則必須使用工作表的單元格集合,即ActiveSheet.Cells(2,2)

如果要單獨比較列I中的每個單元格,請使用循環。如果您只想知道該列中是否存在搜索值,則可以使用Range.Find方法。