我正在不同的宏中编写多个 For If Then 语句。当我添加一个工作表时,我希望能够更改单个“常量”,它将影响涉及它的所有宏。 这是我所拥有的 第一个宏
For x = 1 To Sheets.Count
If Sheets(x).Name <> "Payroll Expenses" And Sheets(x).Name <> "Paystub" Then
i = i + Sheets(x).Cells(sourcename, 4).Value
第二个宏
For x = 1 To Sheets.Count
If Sheets(x).Name <> "Payroll Expenses" And Sheets(x).Name <> "Paystub" Then
i = i + Sheets(x).Cells(sourcename, 5).Value
多个宏跟随
我有大量的宏,据说在 if then 语句中不使用“工资费用”表和“工资存根”表。 我拥有所有这些宏,然后我去向我的文档添加另一个工作表,然后我必须遍历每个宏并将新工作表添加为语句。 即,如果我添加一个新工作表,并且希望在 If then 语句中忽略它,我必须为我一直使用 Private Const 引用的每个宏编写另一个 Sheets(x).Name <> "NEW SHEET"整个模块中的变量,这非常棒。 当涉及到我想在 if then 语句中忽略的所有工作表时,是否有某种方法可以合并这样的内容?
我尝试在每张纸之间使用“和”和“或”来缩短内容,但它无法识别它,除非我将 Sheets(x).Name 添加到每个新纸。 我尝试过使用 Private Const“未使用的工作表作为字符串=“所有未使用的工作表”。但它也不会识别这一点。我是 VBA 新手,所以希望这是有道理的,有人可以提供帮助
创建一个这样的函数:
Function IgnoreSheet(ws As Worksheet)
Select Case ws.Name
Case "Payroll Expenses", "Paystub"
IgnoreSheet = True
End Select
End Function
您可以从多个地方这样调用:
If Not IgnoreSheet(Worksheets(x)) Then
'do something with the sheet
End If