有没有人知道我如何在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(...);
}
}
但只会在填充颜色更改时触发。
我有一张工作表,我用颜色编码了一列,但我也有一个包含特定字的列,该字与第一列的颜色一致。
答案 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
激活工作表时更新。