我需要一些幫助,我似乎無法修復的邏輯語句。VBA邏輯問題與If語句
If (SheetExists("Sheet1") = False Or SheetExists("Sheet2") = False Or SheetExists("Sheet3") = False) Then
MsgBox ("A Key Sheet does not exist:" & vbNewLine & "Sheet1 Exists: " & SheetExists("Sheet1") & vbNewLine & "Sheet2 Exists: " & SheetExists("Sheet2") & vbNewLine & "Sheet3" & SheetExists("Sheet3"))
Else
Exit Sub
End If
我正在使用的測試用例應該有每個SheetExists
語句返回true,因此不會msg用戶。但是,Then
語句即使不應該也會運行。它會打印出每個標準是真實的,但仍運行Then
聲明
我想要什麼: 如果任何表不exist->告訴我這片存在。 Else->無能爲力
錯誤: 當所有表存在:它仍然MSGS用戶
我知道SheetExists的作品,因爲我寫的另一個子來測試它,它工作正常。
表已存在代碼:
Function SheetExists(sheetName As String, Optional wb As Workbook) As Boolean
Dim sht As Worksheet
If wb Is Nothing Then Set wb = ThisWorkbook
On Error Resume Next
Set sht = wb.Sheets(sheetName)
On Error GoTo 0
SheetExists = Not sht Is Nothing
End Function
顯示您SheetExists功能。這可能有問題。上面的代碼對我來說工作得很好。 –
你可以發佈SheetExists的代碼嗎?我首先想到的是它不返回布爾值。沒有這個代碼我們不能測試這個。 –
隨着你的代碼我仍然得到確切的預期。當三張紙存在時,沒有任何反應。如果缺少一個或多個,我會看到消息框。所以要麼你的代碼更多,要麼你的實際代碼中有拼寫錯誤。仔細檢查if語句中三張表的名稱,並確保拼寫正確。 –