excel - 在 VBA 中循环使用具有相似名称结构的工作表

标签 excel vba loops

我的 Excel 文件具有以下工作表结构:
A1 A2 A3 A4 B1 B2 B3 C1 C2 C3 C4 C5 ...

所以你可以看到 4 次 A、3 次 B、5 次 C 等等(没有均匀分布)

我想做的是遍历工作表组并应用一些代码。在这种情况下,组内的代码必须相同,但组之间的代码必须不同,因此我不能简单地同时遍历所有工作表。

我知道如何在 VBA 中获取工作表的名称。我的第一个想法是首先“切断”组名右侧的数字(最后一个字符),然后识别结果的唯一组。然后我想为每个组循环,例如第一个循环将从 A1 开始并在 A4 停止。但是我如何告诉 VBA 识别名称中的上边界不是恒定的(在示例中是 A4,然后是 B3,然后是 C5 等)?

也许这也不是最有效的方法。如果有任何意义,我什至可以将所有工作表重命名为不同的系统,但无论如何都必须应用编码。任何想法都受到高度赞赏。

简而言之,我想做的是:

1) 按名称识别唯一的 Worksheeps 组(上例中的 A、B、C)

2)对于每个组,遍历所有相关工作表并应用一些代码

谢谢。

最佳答案

为了识别唯一组,您可以执行一个循环来查看工作表名称,如果它有“A”,则执行 X、“B”、执行 Y 等。

Dim ws as Worksheet

For each ws in Activebook.Sheets
    If ws.name like "A*" Then
       ** Code for "A" worksheets
    Else If ws.name like "B" Then
       ** code for "B*" worksheets
    Else If [...]
    End if

Next ws

然后,您可以为每种工作表类型创建其他宏,并在上面的代码中调用它。 IE。:
Private Sub A_Things()
  msgbox("This is a sheet 'A' type")
  [...whatever other code you want]
End Sub

Private Sub B_Things()
 msgbox("This is a sheet 'B' type")
 [...whatever other code you want]
End Sub

Sub checkSheets()

    Dim ws as Worksheet

    For each ws in Activebook.Sheets
        If ws.name like "A*" Then
           Call A_Things
        Else If ws.name like "B" Then
           Call B_Things
        Else If [...]
        End if
    Next ws
End Sub

编辑:对于只想在某些工作表上执行此操作或设置一些上限的部分...如果您确切知道要在哪些工作表上运行代码,则可以将它们放入数组中,然后运行代码仅在该数组中的工作表上。

类似(伪代码):
Dim nameArray() as Variant
ReDim nameArray(4) 'Note, this can hold 5 values, so if you have X sheets, ReDim this to X-1 sheets

nameArray = Array("A1","A2","A4","B1","B3")

for i = 0 to UBound(nameArray())
  'this will loop through Sheet A1, then A2, then A4, etc. and run the code below
    If nameArray(i) = "A1" Then
         [run A1 code]
    ElseIf [...]
    End If
Next i

关于excel - 在 VBA 中循环使用具有相似名称结构的工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30126433/

相关文章:

excel - 未找到命名参数

vba - 在工作表选择上激活/停用设计模式

vba - 在模块中运行 VBA 时 Excel 挂起

excel - IE11框架通知栏保存按钮

vba - 如何比较 Excel-VBA 中两个单独的工作表列之间的字符串差异?

javascript - Spot it 算法 - js

bash - makefile循环变量

java - For 循环不工作?

c# - 仅当 Excel 文件实际在 Ms Excel 中打开时才能读取 Excel 文件

excel - Vlookup 语法和用户输入问题