2014-08-28 287 views
0

以下是該宏的簡化版本。基本上我只是想改變我的數組中包含的所有範圍的字體顏色。在「GreyArea()選擇,我得到一個錯誤:無效的預選賽如何使用VBA更改數組內容的字體顏色

Sub Color() 
Dim GreyArea() As Variant 

    GreyArea = Sheets("A").Range("D2:F500,G2:N1000") 

    GreyArea().Select 
    With Selection.Font 
     .Color = 8421504 
    End With 

End Sub 

回答

1

那是因爲你在聲明數組變量,而不是‘範圍’變量

這應該爲你工作

Sub Color() 
    Sheets("A").Range("D2:F500,G2:N1000").Select 
    With Selection.Font 
     .Color = 8421504 
    End With 
End Sub 

或者乾脆

Sheets("A").Range("D2:F500,G2:N1000").Font.Color = 8421504 
+0

其實這是我現在使用的,它的工作原理,但它凍結excel,所以我想我應該使用數組而不是「範圍」。通常數組更有效得多嗎? – Seva 2014-08-28 19:35:05

+1

@Seva它不應該凍結你的Excel。嘗試禁用 application.ScreenUpdating = False – 2014-08-28 19:40:45

+0

您是對的,禁用視覺反饋做了這項工作。謝謝 – Seva 2014-08-29 15:10:17

1

你知道你可以很容易地不選擇什麼,真的只是去:

Sub Color() 

    Dim ws As Worksheet 

    Set ws = Sheets("Sheet1") 
    ws.Range("D2:F5000,G2:N1000").Font.Color = 8421504 

End Sub