我发现了其他几个处理变体的问题,但似乎没有一个能解决我的问题。
我有非常简单的 for 循环进行比较。目的是在不匹配的情况下将 Excel 单元格着色为红色。结果是 99% 准确的,但我注意到一些看似随机的错误。例如,包含数字 104875 的单元格不是红色的,这表示比较列中应该有匹配的单元格。但是没有。似乎它们都应该是错误的或都是正确的。其他一些关于变体的线程提到比较必须是相同的类型,否则你会得到奇怪的错误。就我而言,它们属于同一类型(都是整数),所以这不是问题。
我是 VBA 的新手,仍然试图了解它是如何工作的。
这是代码的相关部分:
Private Sub CommandButton1_Click()
Dim i As Long, j As Long
Dim flag As Boolean
Dim array1() As Variant, array2() As Variant
Dim column1 As Double
Dim column2 As Double
column1 = convertColumn(TextBox1.Text)
column2 = convertColumn(TextBox2.Text)
Set wb1 = Workbooks("Advocate July 2017 Data.xlsm").Sheets(1)
Set wb2 = Workbooks("BI Report 8-18-17.xlsm").Sheets(1)
array1 = Intersect(wb1.Columns(column1), wb1.UsedRange)
array2 = Intersect(wb2.Columns(column2), wb2.UsedRange)
For i = 2 To UBound(array1)
flag = False
For j = 2 To UBound(array2)
If IsNumeric(array1(i, 1)) And IsNumeric(array2(j, 1)) Then If CDbl(array1(i, 1)) = CDbl(array2(j, 1)) Then flag = True
Next j
If Not flag Then wb1.Cells(i, column1).Interior.Color = vbRed
Next i
End Sub
编辑:原来我的代码工作正常。问题只是其中一张床单上的一些单元格被隐藏了,我没有意识到这一点。~facepalm~这就是我在excel中没有经验所得到的