2011-04-22 140 views
0

我試圖作出這樣的選擇的顏色一組5個細胞 的所以基本上是去宏: 透明,黃色,藍色,清澈,黃,藍,...Excel範圍選擇問題

Sub ColorBanding() 
Dim num As Integer 
For i = 2 To 50 
    Dim range As String 
    range("A" + Str(i) + ":E" + Str(i)).Select 
    If i Mod 3 = 0 Then 
     Cells(1, 1).Select 
     ' Yellow 
     With Selection.Interior 
      .Pattern = xlSolid 
      .PatternColorIndex = xlAutomatic 
      .Color = 65535 
      .TintAndShade = 0 
      .PatternTintAndShade = 0 
     End With 
    ElseIf i Mod 3 = 2 Then 
     ' Blue 
     With Selection.Interior 
      .Pattern = xlSolid 
      .PatternColorIndex = xlAutomatic 
      .ThemeColor = xlThemeColorAccent1 
      .TintAndShade = 0.399975585192419 
      .PatternTintAndShade = 0 
     End With 
    End If 
    Next i 
End Sub 

我在使用這條線的麻煩: 「範圍(」 A 「+ STR(ⅰ)+ 」:E「 + STR(i))的選擇。」 上評價

實施例,對於i = 2: 輸出: 「A 2:電子2」 應該是: 「A2:E2」

我得到的技術錯誤是: 「預計陣列」

有沒有更好的方法來做到這一點? 有沒有辦法讓這種方式正常工作?

回答

0

這是正確的語法。也不要選擇/激活任何東西,因爲它只會減慢速度。 'num'有什麼用?

Sub test() 
Dim num As Integer, MyRange As Range, i As Integer 

For i = 2 To 50 
    Set MyRange = Range("A" & i & ":E" & i) 
    MsgBox MyRange.Address 'Delete this test line 
    With MyRange.Cells(1, 1).Interior 
    If (i Mod 3) = 0 Then 
      'Yellow 
      .Pattern = xlSolid 
      .PatternColorIndex = xlAutomatic 
      .Color = 65535 
      .TintAndShade = 0 
      .PatternTintAndShade = 0 

    ElseIf i Mod 3 = 2 Then 
      'Blue 
      .Pattern = xlSolid 
      .PatternColorIndex = xlAutomatic 
      .ThemeColor = xlThemeColorAccent1 
      .TintAndShade = 0.399975585192419 
      .PatternTintAndShade = 0 
    End If 
    End With 
Next i 
End Sub 
+0

對不起,這個數字是從我打算用while循環進行手動遞增時剩下的。自從我找到For循環語法。對不起,它可能造成的任何混淆。 – Zigu 2011-04-23 06:56:48

0

的問題是在這裏

Dim num As Integer 
For i = 2 To 50 
    Dim range As String 
    range("A" + Str(i) + ":E" + Str(i)).Select 
    If i Mod 3 = 0 Then 
    Cells(1, 1).Select 
  1. 請把所有變暗在頂部
  2. 調暗範圍爲字符串?你在想什麼,範圍是一個範圍。就像在工作表上的單元格一樣。
  3. range是一個保留字,不要把它作爲一個變量名,使用類似MyRange代替。
  4. 對象(像rangeworksheet等)只能在Set object = reference_to_other_object_of_the_same_type語句被分配,見下文。
  5. 細胞(1,1)相對於什麼?默認對象是ActiveWorksheet,而ActiveWorksheet.Cells(1,1)永久固定到單元格「A1」。另一方面MyRange.Cells(1,1)可以移動。
  6. 在VBA「&」符連接字符串時,「+」操作符只適用於數字

將其更改爲:

Dim num As Integer 
Dim MyRange as Range 
Dim i as Integer 

For i = 2 To 50 
    Set MyRange = range("A" & Str(i) & ":E" & Str(i)) 
    MyRange.Select 
    If (i Mod 3) = 0 Then 
     MyRange.Cells(1, 1).Select 
    ... 

沒有測試的代碼,但我敢確定它接近。

+0

1.完全正確。我會改變這一點。完全正確。我會改變這一點。我的錯。完全正確。 5.對不起我的錯誤。我正在編寫一種方法,選擇每個單元並單獨更改顏色。我想我應該在網上詢問是否有辦法將它們選爲一個組,並一次更改所有顏色。試圖讓更易讀的代碼! – Zigu 2011-04-22 23:26:44

+0

設置MyRange =範圍( 「A」 + STR(I)+ 「:E」 + STR(I))在VBA – osknows 2011-04-23 01:09:15

+0

@osknows錯誤的語法,感謝指出了這一點,更新了答案。 – Johan 2011-04-23 10:31:56