2012-09-17 33 views
1

我有創建的腳本,在改變所述選項卡的名稱之前,在所述工作表中創建一個新工作表和一個新選項卡,我希望使Sheet1到Sheet4都是紅色。使用VBA在Excel中更改制表符的顏色?

With wbBK2.Sheets(wsWS1).Tab 
    .Color = 255 
End With 

現在上面的代碼工作的各個選項卡,但我想知道有沒有辦法改變所有四個選項卡,在使用Excel VBA同一時間?

謝謝。

回答

6

嘗試這樣:

Dim Sht As Worksheet 
For Each Sht In Application.Worksheets 
    With Sht.Tab 
     .Color = 255 
    End With 
Next Sht 

注:

我想你可能能夠改變Application.WorksheetswbBK2.Worksheets,但我跑太低咖啡因記,或時間來測試它。

+0

作品不錯,但它的顏色會應用到工作簿中所有表,這似乎並不支持OP。可能需要類似'If sht.Name =「Sheet1」或sht.Name =「Sheet2」......' –

+0

啊,我是/假設該工作簿共有4張,他正在尋找將它們全部改爲顏色。 – danielpiestrak

+1

而且whadda知道......看起來你畢竟是對的! SO ...的美麗......解釋問題的1000種方式,1,000種提供答案的方式。好處是爲所有人學習! –

3

起初我以爲使用Sheets(Array("Sheet1","Sheet2")).Select方法可行,但經過測試(並運行宏記錄器)後,我發現它沒有。

更新

OOO產生了很大的意見。這是更清潔,更容易閱讀的方式去:

Sub SheetTabColor() 

Dim mySheets As Worksheets 
Dim mySheet As Worksheet 

Set mySheets = Sheets(Array("Sheet1", "Sheet2", "Sheet3", "Sheet4")) 

For Each mySheet In mySheets 
    mySheet.Tab.Color = 255 
Next 


End Sub 

這是我的原創。同樣的想法,略有不同的方法:

Sub SheetTabColor() 

Dim arrSheets() As String 

arrSheets() = Split("Sheet1,Sheet2,Sheet3,Sheet4", ",") 

Dim i As Integer 
For i = LBound(arrSheets()) To UBound(arrSheets()) 

    Sheets(arrSheets(i)).Tab.Color = 255 

Next 

End Sub 
+1

您仍然可以通過設置SelSheets = wbBK2.Sheets(Array(「Sheet1」,「Sheet2」,「Sheet3」,「Sheet5」,「Sheet6」))來循環工作表的數組:對於SelSheets中的每個sh:sh。 Tab.Color = 255:Next sh' – user3357963

+0

+1 @ooo。我非常喜歡那個評論,我編輯了我的答案:) –