当细胞颜色改变VBA时,基于细胞填充颜色改变相邻细胞值

时间:2018-05-11 17:16:43

标签: vba excel-vba excel

有没有人知道我如何在VBA中为我的工作表添加一些代码,仅在颜色更改时评估单元格颜色?所以它类似于这样的东西

#define UNDEFINED_FILLTER -1

void loop_over_rooms() {
    for (; currentAprt != NULL; currentAprt = currentAprt->next) {
        if (maxPrice == UNDEFINED_FILLTER) { continue; }
        if (MinimumNumOfRooms == UNDEFINED_FILLTER) { continue; }
        if (MaximumNumOfRooms == UNDEFINED_FILLTER) { continue; }

        // At this point, we know fields are filled 
        printf(...);             
    }
}

但只会在填充颜色更改时触发。

我有一张工作表,我用颜色编码了一列,但我也有一个包含特定字的列,该字与第一列的颜色一致。

1 个答案:

答案 0 :(得分:0)

Excel没有专门针对背景颜色变化的事件。但是,对于大多数用例而言,每次更改检查单个单元格的颜色都不合理。

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$B$1" And Target.Interior.color <> xlNone Then

Select Case Target.Interior.ColorIndex
    Case 3
        Target.offset(0, 1).Value = "Text if adjacent cell is red"
    'And so on

End If

End Sub

编辑:根据下面的评论,这假定目标范围内的VALUE已更改,而不仅仅是格式。如果您需要更频繁地调用基于事件的解决方案,则每次新范围成为活动选择时,您都可以尝试调用Worksheet_SelectionChange,但效率会降低。

如果可能,最好按一下按钮来更新值。和/或在使用Worksheet_Activate激活工作表时更新。