2011-04-22 111 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