【发布时间】:2017-07-27 19:21:34
【问题描述】:
我正在尝试从 L2 中突出显示 L 列中字体颜色为红色的重复邮政编码。我在网上做了一些研究并相应地修改了代码,但它们不能正常工作。
我使用 F8 并停在 y = Worksheet... 我试图在 WorksheetFunction 前面添加单词 Application. 但它给了我同样的错误。
Sub test()
Dim x, y, LR22 As Long
Dim zip As Worksheet
Set zip = Worksheets("Zip")
LR22 = zip.Cells(Rows.Count, "L").End(xlUp).Row
For x = 2 To LR22
If zip.Cells(x, 12) <> "" Then
y = WorksheetFunction.Match(zip.Cells(x, 12), zip.Range("L2:L" & L22), 0)
If x <> y Then
zip.Cells(x, 12).Font.Color = vbRed
End If
End If
Next x
End Sub
【问题讨论】:
-
将
L22更改为LR22。并添加Option Explicit作为代码模块的第一行 - 这将强制您声明所有变量,因此在您输入这样的错字时会通知您。 -
嗯,这是一个完全不同的问题 - 那是“为什么当前单元格的值总是存在于包括当前单元格的范围内”并且可以通过测试
x <> y + 1来解决。 (现在是清晨,我还在喝咖啡,但我认为这就是原因。) -
@YowE3K 的建议添加
Option Explicit对于编写可靠的VBA 代码几乎是必不可少的。您可以通过在 VBA 编辑器中启用Require Variable DeclarationinTools/Options/Editor来一劳永逸地做到这一点。 -
您还应该撤消对
Else的If x <> y + 1 Then的颜色更改。 -
@JohnColeman
Option Explicit和缩进使可调试代码。 Rubberduck VBA 会为你做这两件事。 ;-)