2013-06-29 57 views
0

我想基於動態數據構建一個相當複雜的Excel宏。我的第一個攔路虎是,我掙扎着爬一鍵觸發的Excel宏把每個選項卡的名稱在當前操作後,並插入它的名字當前薄板的第三列Excel 2010 VBA將選項卡名稱複製到連續列

我:

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之間輸入最後一張紙的名字!我究竟做錯了什麼?

回答

0

這將會把工作表的名稱中的選項卡中Activesheet權在Activeshseet的第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您在原始代碼中執行的一般方式。它可能會錯誤地掩蓋你不期望的其他錯誤。它應該只用於捕獲您所期望的錯誤。

+0

太棒了!非常感謝你。 –

+0

很高興我能幫到你。歡迎來到SO。 –

相關問題