Excel VBA Worksheet_BeforeRightClick事件点击区域内任意单元格选中全范围
Excel VBA 右键点击整段区域着色解决方案
修改后的代码
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Cancel = True ' 定义需要整体着色的红色区块集合 Dim redRanges As Variant redRanges = Array("B11:K13", "B26:K39", "B42:K45") Dim rng As Variant ' 遍历匹配点击位置所属的红色区块 For Each rng In redRanges If Not Intersect(Target, Me.Range(rng)) Is Nothing Then ' 直接对整个匹配到的区块着色 Me.Range(rng).Interior.Color = vbRed Exit Sub End If Next ' 蓝色区域逻辑,如需整段着色可参考上方红色区域逻辑调整 If Not Intersect(Target, Me.Range("L8:L44")) Is Nothing Then Target.Interior.Color = vbBlue End If End Sub
关键修改说明
- 原代码中多区域
Range的分隔符误用了分号;,VBA语法规范要求多区域分隔使用逗号,,否则会触发区域定义错误 - 将独立的预定义区块存入数组遍历,匹配到点击位置所属的区块后直接对整个区块赋值填充色,无需逐个点击单元格
- 若需要L列蓝色区域也实现点击单个单元格整段着色,只需将L列区域也按上述数组遍历逻辑调整即可
内容的提问来源于stack exchange,提问作者LDX
相关产品推荐
相关产品推荐

