编译错误;结束时不存在时,虽然两者都存在

时间:2019-10-25 12:37:02

标签: excel vba with-statement

当前,如果行中的特定单元格包含某个短语(该单元格包含的不只是特定短语),则当前正在处理脚本以突出显示一行。但是,当尝试测试时,我看到错误“编译错误:不使用With结束”在我的代码中可以同时看到With和End With,尽管可能我已经花了很长时间才注意到明显。任何人都可以在代码中注意到任何可能导致此问题的东西吗?

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

编辑:很抱歉这里的业余代码,我没有受过训练,只是尝试根据简单的在线视频和Google指南进行此操作,因为我们没有其他人可以这样做。

1 个答案:

答案 0 :(得分:0)

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

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等对视为开/关括号对,则它的基本含义是“此代码某种程度上错过了右括号”。