Excel 编译错误;尽管两者都有,但以无结尾

Excel 编译错误;尽管两者都有,但以无结尾,excel,vba,with-statement,Excel,Vba,With Statement,如果行中的特定单元格包含特定短语(该单元格包含的不仅仅是特定短语),则当前正在处理脚本以高亮显示该行。然而,在尝试测试时,我看到了错误“compileerror:End With without With”,我可以在代码中看到With和End With,尽管我可能已经看了太久而没有注意到明显的错误。有人注意到代码中可能导致这种情况的任何东西吗 Sub Conversion() Dim State As String Dim County As String Dim Date As String

如果行中的特定单元格包含特定短语(该单元格包含的不仅仅是特定短语),则当前正在处理脚本以高亮显示该行。然而,在尝试测试时,我看到了错误“compileerror:End With without 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

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

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

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
循环缺少结束
下一个


此错误消息和类似的错误消息可能有点误导。它基本上意味着“此代码以某种方式遗漏了一个结束的“括号”,如果您将带/End With
For/Next
Select/End Select
等对看作是开始/结束括号对。

您遗漏了一个
Next
。使用这个很酷的工具,你会马上看到它。学会正确缩进你的代码。它使跟踪执行流程和识别此类问题变得更加容易。
.Characters(开始:=Len(Tmp)+1,长度:=y)。EntireRow.Color=RGB(252227,3)
看起来问题很大。
工作表
没有
字符
属性<代码>字符
没有
EntireRow
属性;而且
EntireRow
(一个
范围
)没有
颜色属性。另外,尝试“标记”下一个
s,因此
对于x=1到10:next x
感谢@BigBen,橡皮鸭工具真的很有用!我希望我能在不把事情搞砸的情况下完成剩下的工作:P我一直在尝试用谷歌搜索我的大部分问题,只在我真的找不到答案时才提问。如评论中所述,
。Characters(Start:=Len(Tmp)+1,Length:=y)。EntireRow.Color=RGB(252227,3)
有多个问题,只是一个注释。我预计不久会有另一个问题。