小兔网

下面我们将查看Excel VBA中的一个程序,该程序比较随机选择的范围并突出显示唯一的单元格。如果您还不熟悉这些领域,我们强烈建议您先阅读此示例。

情况:

比较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

4.当用户仅选择一个区域时通知用户。

如果 Selection.Areas.Count <= 1,
      MsgBox“请选择多个区域。”
否则


结束 。如果

必须在Else和End If之间添加下一行代码行(分别位于5、6和7)。

5.为所选区域的单元格着色。

rangeToUse.Interior.ColorIndex = 38

6.包围每个区域。

对于 每个 singleArea  rangeToUse.Areas
    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

说明:这看起来有点不知所措,但这并不困难。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将第二个区域的所有值与第三个区域的所有值进行比较。如果值相同,则将两个单元格的背景色设置为“不填充”,因为它们不是唯一的。

单击工作表上的命令按钮时的结果:

比较范围结果