vba - 在多个工作表中应用范围修改

标签 vba excel

我有一个包含 12 张工作表(每个月的缩写名称)加上两张额外的支持表的工作簿。我想创建一个宏,我可以在其中定义许多不同的范围(在下面的示例中,有 5 个范围),将它们分组到一个数组中,并在所有月度工作表上一一合并这些范围。
我遇到了以下代码(它运行时没有错误,并且显然运行了我要求的所有工作表) - 但只在第一个工作表(“Jan”)上应用了转换,而对其他工作表不做任何事情?你能帮我找出我的错误在哪里吗?在此先感谢大家!

Sub layout()

Dim rng1, rng2, rng3, rng4, rng5 As Range

Set rng1 = Range("A2:C3")
Set rng2 = Range("A4:A5")
Set rng3 = Range("B4:B5")
Set rng4 = Range("C4:C5")
Set rng5 = Range("D2:D5")

Dim arr As Variant
arr = Array(rng1, rng2, rng3, rng4, rng5)

Dim wb As Workbook
Set wb = Application.Workbooks("Book1")

Dim ws As Worksheet
Dim i As Integer

For Each ws In wb.Sheets
    Select Case ws.name
    Case Is = "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
        For i = 0 To 4
        ws.Activate
        arr(i).Merge
        Next
    End Select
Next ws

End Sub

最佳答案

我不知道这 2 个额外支持表的名称,我们只称它们为 SupoortSheet1 和 Supportsheet 2。使用 Select 案例在这 2 个案例中不执行任何操作,并且在任何其他案例中,您合并:

For Each ws In wb.Sheets
    Select Case ws.Name
        Case "SupportSheet1"
            'do nothing
        Case "SupportSheet2"
            'do nothing
        Case Else
            'it's a month sheet. We merge
            For i = 0 To 4
                ws.Activate
                arr(i).Merge
            Next
    End Select
Next ws

更多关于 Case Else 的信息(有时真的很有用),read here

关于vba - 在多个工作表中应用范围修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48926037/

相关文章:

arrays - 将多维数组写入excel vba

vba - Excel VBA : Formula is too complex for object

vba - Find和FindNext复制所有匹配对应的数据

r - 有没有办法通过 R 中的 read_excel(readxl) 中的列名来分配 col_types

excel - 如果 2 行的 2 个单元格相同,则将单元格字符串添加到另一个单元格

vba - 打开文件夹和子文件夹中的工作簿并更新每个

vba - Excel vba : object variable or with block variable not set error when returning Object from function

excel - 以绝对值和相对值引用 Excel 单元格

excel - 如何在 VBA 中自动执行电源查询?

Excel VBA 接受错误的日期输入