编写多个 IF <>,然后跨多个宏。这个可以精简一下吗

问题描述 投票:0回答:1

我正在不同的宏中编写多个 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 新手,所以希望这是有道理的,有人可以提供帮助

excel vba for-loop if-statement
1个回答
0
投票

创建一个这样的函数:

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
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.