VBA - 细胞颜色

时间:2011-11-07 08:07:50

标签: excel vba colors

这段代码有什么问题? 我得到了一个“ARG!”错误

Public Function nr_kolor(kom As Range)  
  For Each komorka In kom
    wartosc = komorka.Font.Color
    wiersz = komorka.Row
    kolumna = komorka.Column + 3
    nr_kolor = wartosc
  Next komorka
  activesheet.Cells(wiersz, kolumna).Select
  Selection.Interior.Color = wartosc  
End Function

1 个答案:

答案 0 :(得分:3)

有很多事情你做错了。

  • 您未能声明变量。
  • 您需要使用 Sub()而不是函数()。作为一项规则,不允许函数以任何方式更改工作表,只需操作并返回值。
  • 您的循环有错误 - 如果您希望对多个单元格执行操作,而不是所有指令都需要在循环内。现在它只会着色1个单元格(在您的范围内最后一个单元格右侧3列)。
  • 您将在功能结束前返回该功能。

我认为你要做的事情(没有解释)是采用一系列细胞,并将相同的内部颜色应用于三列以上的细胞。这是一种更有效的方法。我有意保持逻辑简单。

Sub ColorCells()

Dim cell As Range

For Each cell In Range("A1:A10")
    cell.Offset(, 3).Interior.Color = cell.Interior.Color
Next

End Sub

工作原理: 您将变量单元格创建为范围,这将表示您提供的范围内的每个单元格。对于范围中的每个单元格,您希望将相同的内部颜色应用于右侧的单元格OFFSET 3列。