VBA判断是否是B列某行是否发生变化,若B列某行有变化,则将该行的C列、D列、H列设为红色,并禁止编辑,无法放置光标。
时间: 2024-09-27 20:11:08 浏览: 29
在VBA中,你可以使用Worksheet_Change事件来监控工作表的变化。当你需要检查B列是否有变化时,可以创建一个宏,其基本步骤如下:
1. 首先,在VBA编辑器中,选择插入 > 宏 (Insert > Macro),给宏命名例如 "CheckColumnB"。
```vba
Sub CheckColumnB()
Application.EnableEvents = False ' 关闭事件处理,防止无限循环
Dim ws As Worksheet
Set ws = ActiveSheet ' 当前活动的工作表
For Each rng In ws.Range("B:B") ' 遍历B列
If rng.Interior.Color <> RGB(255, 0, 0) Then ' 如果单元格不是红色
If rng.Value <> ws.Cells(rng.Row, "B").Previous.Value Then ' 检查是否有变化
rng.Resize(1, 3).Interior.Color = RGB(255, 0, 0) ' 设置C、D、H列为红色
rng.Resize(1, 3).Locked = True ' 禁止编辑
Exit For ' 找到第一个变化就停止
End If
End If
Next rng
Application.EnableEvents = True ' 重新启用事件处理
End Sub
```
这个宏会查找B列每个单元格,如果发现颜色不是红色并且值发生了改变,就会将其及相邻的C、D、H列设置为红色并锁定。然后退出循环。
阅读全文