2016-07-05 50 views
0

我的目標是僅在選定工作表中執行VBA代碼。循環選擇工作表(設置activewindow.selected工作表)

我嘗試以下:

1 Sub selectedsheet() 
2  Dim sh As Worksheet 
3  Dim selectedshs As Worksheets 
4   
5  Set selectedshs = ActiveWindow.SelectedSheets 
6   
7  For Each sh In selectedshs 
8   MsgBox sh.Name 
9  Next sh 
10 End Sub 

然而,在第5行,運行時錯誤13 - 類型不匹配發生。

任何幫助,將不勝感激。謝謝!

+2

嘗試改變'Selectedshs'到表集合,而不是(存在工作表和表對象之間的區別sublte) – RGA

+0

這個工作。留言Merci! – Sevii

回答

0

您不僅可以使用所選工作表的計數(即activewindow.SelectedSheets.count),然後使用整數循環這些(即activewindow.SelectedSheets(1).name)?

+0

道歉,如果我沒有包含代碼的其他部分,因爲它很長。我無法做到這一點,因爲在我循環選定的工作表之前,我添加了一張新工作表,從而使新工作表成爲唯一選定的工作表。不過謝謝! – Sevii

0

您需要將您的selectedshs聲明爲通用對象。

Sub selectedsheet() 
    Dim sh As Worksheet 
    Dim selectedshs As Object 

    Set selectedshs = ActiveWindow.SelectedSheets 

    For Each sh In selectedshs 
     MsgBox sh.Name 
    Next sh 
End Sub 

Sub selectedsheet() 
    Dim sh As WorkSheet 

    For Each sh In ActiveWindow.SelectedSheets 
     MsgBox sh.Name 
    Next sh 

End Sub 
+0

通用對象也工作。謝謝! – Sevii