我正在寻找一个宏,如果这些单元格的值与当前选定的单元格相同,它将自动突出显示当前工作表中的任何单元格。因此,如果当前选择了单元格 B2,并且它包含值 7,那么所有其他值为 7 的单元格将被突出显示。这是用于数独谜题的 9x9 网格。 范围是 B2:J10。注意:不要选择和突出显示空白单元格,如果可能的话,如果不使用则禁用的方法。列出了一个已有 10 年历史的解决方案,但它突出显示了所有匹配数字的整个工作表,如果您单击一个空白单元格,它会突出显示所有 1 亿个空白单元格(只是猜测),这就是为什么我需要 Range 作为提到了。
答案 0 :(得分:1)
我没有时间给你写代码,但是一些提示:
Worksheet_SelectionChange()
事件在选择新单元格时触发Dim Cell as Range
和 For each Cell in MySheet.Range("B2:J10")
循环检查相关范围内的所有单元格If Cell.Value = Selection.Value Then
exit sub
' 之类的东西。立>
这应该是您需要的所有指示 - 交给您尝试并找出适合您的具体细节(要突出显示什么颜色/风格等)。
答案 1 :(得分:1)
在下面的代码中,我只是使用条件格式来突出显示值为浅红色的所有单元格。我还添加了一个 If else 语句,以便在选择为空白时不突出显示任何单元格。
我建议您转到开发人员选项卡创建一个宏并为其分配一些快捷方式(Ctrl + Shift 快捷方式),以便您每次选择单元格时都可以轻松调用它。创建宏后,复制此代码并将其粘贴到 VBA 编辑器中。
此外,如果此解决方案适合您,请选择此作为已接受的答案。谢谢!
Sub Final()
Dim var As Double
var = ActiveCell.Value
Range("B2:J10").Select
Selection.FormatConditions.Delete
If var <> 0 Then
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:=var
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Font
.Color = -16383844
.TintAndShade = 0
End With
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 13551615
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Range("B2").Select
Else
Range("B2").Select
Exit Sub
End If
End Sub