VBA - 使用ActiveCell和CurrentRegion时出错

时间:2016-07-17 12:50:03

标签: vba

我正在尝试编写一小段VBA,它会根据相邻列中的RGB变量对一列excel单元进行着色。所以我有一个数据表(没有标题),有3列(R G和B)和x行(数量会有所不同)。我想要的是根据左边的3个数字为这个表右边的第4列着色。请注意,我计划在每次执行此操作时选择左上角的单元格。

以下是我使用过的代码,但收到错误消息:

  

错误438 ...对象不支持此属性或方法

指出Set rng行是问题所在。

任何有用的想法或帮助

Sub RGBTest()

Dim rng As Range
Dim n As Integer

Set rng = ActiveSheet.ActiveCell.CurrentRegion

ActiveCell.Offset(0, 3).Activate

For n = 1 To rng.Rows.Count

ActiveCell.Interior.Color = RGB(rng.Cells(n, 1), rng.Cells(n, 2), rng.Cells(n, 3))

ActiveCell.Offset(1, 0).Activate
Next n

End Sub

1 个答案:

答案 0 :(得分:1)

所以行

Set rng = ActiveSheet.ActiveCell.CurrentRegion

导致错误Error 438... Object doesnt support this property or method

这意味着ActiveSheet不支持.ActiveCellActiveCell不支持.CurrentRegion

ActiveCell是一个范围,CurrentRegionRange的属性,因此不应该是它。

但是,ActiveCell不是worksheet的属性,而是Application的属性。这是有道理的,因为每个Excel实例只有一个活动单元格,而不是每个工作表。而不是

Set rng = ActiveSheet.ActiveCell.CurrentRegion

只需使用

Set rng = ActiveCell.CurrentRegion