【问题标题】:Using a Colour-Vector to Fill Cell Colours in one Swoop使用颜色向量一次性填充单元格颜色
【发布时间】:2018-04-10 23:50:05
【问题描述】:

我想将灰度图的颜色 RGB(0,0,0) 到 RGB(255,255,255) 存储在 Long 类型的向量中,然后将块单元格颜色填充到 Excel 电子表格的列中。 VBA 宏中的最后一个命令不起作用。我得到的错误信息是:

运行时错误“13”:类型不匹配

我做错了什么?有什么建议么?谢谢

Sub GreyMap()
    Dim cvec(256) As Long, rng As Range, i%, k%
    Set rng = Range("C1:C256")
    k = 0
    For i = 0 To 255 ' Loop over main diagonal of RGB cube
     k = k + 1
        cvec(k) = RGB(i, i, i) ' Shades of Grey
        rng.Rows(k) = cvec(k)
      '  rng.Rows(k).Interior.Color = cvec(k)  ' This works, but I don't want to do a cell-by-cell write
    Next i
    rng.Interior.Color = cvec        ' Is this even a legal VBA command ?
End Sub

【问题讨论】:

    标签: excel vba vector


    【解决方案1】:

    我认为你不需要这么复杂的方法

    Sub GreyMap()
        Dim i As Long
        For i = 0 To 255
            Range("C" & i + 1).Interior.Color = RGB(i, i, i)
        Next i
    End Sub
    

    【讨论】:

    • 是的,但我的意思是要特别避免这样做,因为逐个单元的操作很昂贵。我想做一个 block 颜色填充。事实上,如果你注意到的话,我已经注释掉了你在我的代码中使用的命令,因为这是我希望避免的方法。
    • AFAIK,您可以使用单个命令为具有多个单元格的范围着色,全部为一种颜色 (Range("C2:C256).Interior.Color = RGB 127,127,127),但不能使用不同的颜色
    • 可悲的是,我也是这么怀疑的。
    【解决方案2】:

    经过反思,而不是实际回答它,我收回了我提出的问题,因为如果我想用一种颜色填充整个范围,那么我必须使用相同的命令,其 RHS 必须是一个标量,因此也不能是一个向量。

    话虽如此,是否存在确实允许矢量填充的 .interior.color 语法的变体?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-09
      • 2018-04-11
      • 2017-01-05
      • 2019-07-26
      • 1970-01-01
      • 1970-01-01
      • 2020-01-11
      • 2017-06-05
      相关资源
      最近更新 更多