【问题标题】:vba method range of object errorvba方法范围对象错误
【发布时间】: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 &lt;&gt; y + 1 来解决。 (现在是清晨,我还在喝咖啡,但我认为这就是原因。)
  • @YowE3K 的建议添加Option Explicit 对于编写可靠的VBA 代码几乎是必不可少的。您可以通过在 VBA 编辑器中启用 Require Variable Declaration in Tools/Options/Editor 来一劳永逸地做到这一点。
  • 您还应该撤消对ElseIf x &lt;&gt; y + 1 Then 的颜色更改。
  • @JohnColeman Option Explicit 和缩进使可调试代码。 Rubberduck VBA 会为你做这两件事。 ;-)

标签: vba excel


【解决方案1】:

您无需代码即可完成此操作。对 L 列进行排序,然后添加条件格式公式 A1=A2。这将突出显示连续单元格中的重复条目。

【讨论】:

  • 当列表按邮政编码排序时,这将起作用。更改公式以包含匹配函数可能会起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多