【问题标题】:Compile Error; End With without With although both are there编译错误; End With without With 虽然两者都存在
【发布时间】:2020-02-21 19:33:55
【问题描述】:

如果行中的特定单元格包含某个短语(该单元格包含的不仅仅是特定短语),当前正在编写一个脚本以突出显示该行。但是,在尝试测试时,我看到了错误“编译错误:以不带结尾”我可以在我的代码中看到带和结尾,尽管我可能已经看了太久而没有注意到明显的。任何人都可以注意到代码中可能导致此问题的任何原因吗?

Sub Conversion()

Dim State As String
Dim County As String
Dim Date As String
Dim TC As String    
Dim H As String
Dim Tmp As String
Dim m As Long
Dim x As Long    

H = "not recognised"
With Sheets("Matched Date")
 For Each cell In Sheet
    m = UBound(Split(Rng.Value, H))
    If m > 0 Then
    Tmp = ""
    For x = 0 To m - 1
    Tmp = Tmp & Split(Rng.Value, H)(x)
    .Characters(Start:=Len(Tmp) + 1, Length:=y).EntireRow.Color = RGB(252, 227, 3)
    Tmp = Tmp & H
    Next
    End If
End With

编辑:很抱歉这里的业余代码,我没有受过培训,只是尝试根据简单的在线视频和谷歌指南来做这件事,因为我们没有其他人可以为我们做这件事。

【问题讨论】:

  • 您缺少Next。使用这个很酷的indenter,您会立即看到它。
  • 学会正确缩进你的代码。它使跟踪执行流程和识别此类问题变得更加容易。
  • .Characters(Start:=Len(Tmp) + 1, Length:=y).EntireRow.Color = RGB(252, 227, 3) 看起来(是)非常有问题。 Sheet 没有 Characters 属性; Characters 没有 EntireRow 属性;而EntireRowRange)没有Color 属性。
  • 另外,尝试“标记”nexts,所以for x=1 to 10:next x
  • 感谢@BigBen,橡皮鸭工具真的很有用!我希望我能设法完成剩下的工作而不会搞砸:P 我一直在尝试用谷歌搜索我的大部分问题,只有在我真的找不到答案时才问

标签: excel vba with-statement


【解决方案1】:

如上所述,正确的代码缩进是您的朋友。这样做,你的代码看起来像

With Sheets("Matched Date")
    For Each cell In Sheet
        m = UBound(Split(Rng.Value, H))
        If m > 0 Then
            Tmp = ""
            For x = 0 To m - 1
                Tmp = Tmp & Split(Rng.Value, H)(x)
                .Characters(Start:=Len(Tmp) + 1, Length:=y).EntireRow.Color = RGB(252, 227, 3)
                Tmp = Tmp & H
            Next
        End If
End With

这样,很容易发现您的第一个 For 循环缺少结束 Next

此错误消息和类似的错误消息可能有点误导。如果您将 With/End WithFor/NextSelect/End Select 等对视为开/关括号对,它基本上意味着“此代码以某种方式遗漏了一个右‘括号’”。

【讨论】:

  • 如 cmets 中所述,.Characters(Start:=Len(Tmp) + 1, Length:=y).EntireRow.Color = RGB(252, 227, 3) 有多个问题,只是一个注释。我预计很快就会有另一个问题。
猜你喜欢
  • 2022-11-29
  • 1970-01-01
  • 2018-10-20
  • 1970-01-01
  • 1970-01-01
  • 2014-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多