0

我正在尝试基于动态数据构建一个相当复杂的 excel 宏。我的第一个绊脚石是我正在努力获得一个按钮触发的 Excel 宏来获取当前选项卡之后的每个选项卡的名称,并在当前工作表的每第三列插入其名称

我有:

    Sub Macro1()
    On Error Resume Next
    For Each s In ActiveWorkbook.Worksheets
    Sheet2.Range("A1:ZZ1").Value = s.Name
    Next s
    End Sub

这确实不好用,因为它似乎只是在 A1 和 ZZ1 之间输入了最后一张纸的名称!我究竟做错了什么?

4

1 回答 1

0

这会将工作表的名称放在ActivesheetActiveshseet 第 1 行的每 3 列右侧的选项卡中:

Sub Macro1()
Dim i As Long

With ThisWorkbook
    'exit if Activesheet is the last tab
    If .ActiveSheet.Index + 1 > .Worksheets.Count Then
        Exit Sub
    End If
    For i = .ActiveSheet.Index + 1 To .Worksheets.Count
        .ActiveSheet.Cells(1, (i - .ActiveSheet.Index) + (((i - .ActiveSheet.Index) - 1) * 2)) = .Worksheets(i).Name
    Next i
End With
End Sub

请注意,On Error Resume Next以您在原始代码中所做的一般方式使用是一个坏主意。它可能会错误地掩盖您未预料到的其他错误。它应该只用于捕获您确实期望的错误。

于 2013-06-29T15:43:50.697 回答