excel - 如果 activecell 内部颜色发生变化,则
问题描述
我想要以下 VBA 代码:
如果活动单元格内部颜色更改为 colorindex 44,那么我希望单元格右侧的五列具有文本“完成”和今天的日期。
我已经尝试了以下方法,但仅当我将所选单元格向右移动时才有效。当单元格颜色未更改时,它也不会停止工作。
Private Sub Worksheet_SelectionChange (ByVal Target As Range)
If ActiveCell.Offset(0, -1).Interior.ColorIndex = 44 Then
ActiveCell.Offset(0, 4) = "Done" & Date
End If
End Sub
解决方案
您必须使用Target
而不是ActiveCell
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Interior.ColorIndex = 44 Then
Target.Offset(ColumnOffset:=4).Value = "Done " & Date
End If
End Sub
请注意,这无法检查颜色是否已更改,因为没有相应的事件。您只能测试实际颜色索引是否为 44。但为了防止覆盖“更改”日期,您可以测试日期是否已经存在。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Rows.Count + Target.Columns.Count > 2 Then Exit Sub 'exit if more than one cell is selected
If Target.Interior.ColorIndex = 44 And Not Left$(Target.Offset(ColumnOffset:=4).Value, 4) = "Done" Then
Target.Offset(ColumnOffset:=4).Value = "Done " & Date
End If
End Sub
推荐阅读
- mysql - SQL 问题,星期日是一周的第一天?
- javascript - Angular Animations 完成后重置样式
- java - 无法使用 Apache log4j2/slf4j 发送错误邮件
- python - 如何获得价值
- 使用scrapy spider python
- java - 计算我 dp 错误的高度
- android - Kotlin / Native 将 android 日志导入 android 共享代码模块时遇到问题
- c++ - C++ 使用裸指针,而不是智能指针
- sql - STRING_AGG with line break
- node.js - 如何使用节点连接 ftps 并上传文件
- python-3.x - 在数据框中查找节点的更简单方法