Excel VBA如果不是工作表是Sheet 1或工作表2,并且布尔在For Next循环中是true

整个macros从数据库中提取数据,并在Excel中更新工作表我基本上试图告诉它更新除了两个特定工作表之一,一个在开始和一个。 该代码已被使用了一段时间,但我想添加一个工作表开始,不能得到它的工作。

这是有问题的代码

For Each wsSheet In wbBook.Worksheets strName = wsSheet.Name If Not (wsSheet Is (Sheet1)) And _ (blnTF Or (strName = wsActSheet.Name)) _ Then ... other code 

这上面的代码工作正常,但我想添加一个Or语句来检查,如果不是工作表1或工作表2。

我是VBA新手,不熟悉我所知道的语法逻辑上我想要做什么,并尝试了多次

这也是我的尝试

 For Each wsSheet In p_wbBook.Worksheets strName = wsSheet.Name If Not (wsSheet Is (Sheet1) Or (Sheet2)) And _ (blnTF Or (strName = wsActSheet.Name)) _ Then .... other code 

但它不喜欢或声明我也试过这个如果不是写在外面

 If wsSheet is Sheet2 Then Goto Next 

但是也不喜欢那个。

任何帮助为什么Excel不喜欢这种语法将不胜感激。

@PAH是正确的。 在此背景下,您必须在OR之后有完整的声明。

 (condition 1) Or (condition 2) 

改成:

 If Not (wsSheet Is (Sheet1) Or wsSheet Is (Sheet2)) And _ 

出于testing目的,我使用了以下内容:

 For Each wsSheet In wbBook.Worksheets strName = wsSheet.Name If Not (strName = "Sheet1" Or strName = "Sheet2") And (blnTF Or (strName = wsActSheet.Name)) Then MsgBox (strName) End If Next wsSheet