下面我们将查看Excel VBA中的一个程序,该程序比较随机选择的范围并突出显示唯一的单元格。如果您还不熟悉这些领域,我们强烈建议您先阅读此示例。
情况:
注意:此示例中唯一的唯一值是3,因为所有其他值都出现在至少一个以上的区域中。要选择Range(“ B2:B7,D3:E6,D8:E9”),请按住Ctrl键并选择每个区域。
在您的工作表上放置一个命令按钮,并添加以下代码行:
1.首先,我们声明四个Range对象和两个Integer类型的变量。
昏暗 rangeToUse 作为范围,singleArea 作为范围,小区1 作为范围,小区2 作为范围,我作为 整数,J 作为 整数
2.我们使用所选范围初始化Range对象rangeToUse。
设置 rangeToUse =选择
3.添加将所有单元格的背景色更改为“无填充”的行。还要添加删除所有单元格边框的线。
Cells.Interior.ColorIndex = 0
Cells.Borders.LineStyle = xlNone
Cells.Borders.LineStyle = xlNone
4.当用户仅选择一个区域时通知用户。
如果 Selection.Areas.Count <= 1,则
MsgBox“请选择多个区域。”
否则
结束 。如果
MsgBox“请选择多个区域。”
否则
结束 。如果
必须在Else和End If之间添加下一行代码行(分别位于5、6和7)。
5.为所选区域的单元格着色。
rangeToUse.Interior.ColorIndex = 38
6.包围每个区域。
对于 每个 singleArea 在 rangeToUse.Areas
singleArea.BorderAround ColorIndex:= 1,重量:= xlThin
接着 singleArea
singleArea.BorderAround ColorIndex:= 1,重量:= xlThin
接着 singleArea
7.该程序的其余部分如下所示。
对于 I = 1 到 rangeToUse.Areas.Count
为 J = i + 1的要 rangeToUse.Areas.Count
对于 每个小区1 在 rangeToUse.Areas(ⅰ)
对于 每个小区2 在 rangeToUse.Areas(J)
如果 cell1.Value = cell2.Value 然后
cell1.Interior.ColorIndex = 0
cell2.Interior.ColorIndex = 0
结束 如果
下一个 cell2
下一个 cell1
下一个 j
下一个 i
为 J = i + 1的要 rangeToUse.Areas.Count
对于 每个小区1 在 rangeToUse.Areas(ⅰ)
对于 每个小区2 在 rangeToUse.Areas(J)
如果 cell1.Value = cell2.Value 然后
cell1.Interior.ColorIndex = 0
cell2.Interior.ColorIndex = 0
结束 如果
下一个 cell2
下一个 cell1
下一个 j
下一个 i
说明:这看起来有点不知所措,但这并不困难。rangeToUse.Areas.Count等于3,因此前两行代码减少为For i = 1至3和For j = i + 1至3。对于i = 1,j = 2,Excel VBA比较第一个区域的所有值与第二个区域的所有值。对于i = 1,j = 3,Excel VBA将第一个区域的所有值与第三个区域的所有值进行比较。对于i = 2,j = 3,Excel VBA将第二个区域的所有值与第三个区域的所有值进行比较。如果值相同,则将两个单元格的背景色设置为“不填充”,因为它们不是唯一的。
单击工作表上的命令按钮时的结果: