嵌套…每个循环与If语句

我是vb.script新手,所以这可能只是一个格式问题,我找不到答案。 问题是validation同一工作簿中不同工作表上的单元格中的数据。

在工作表中循环,然后遍历单元格区域:

Private Sub Validate(ByRef objWorkbook As Workbook) Dim strPattern As String: strPattern = "^\-{0,1}\d+(.\d+){0,1}$" Dim regEx As New VBScript_RegExp_55.RegExp Dim strInput As String Dim strOutput As String Dim Myrange As Range Dim regExCount As Object Set regExCount = CreateObject("vbscript.regexp") On Error Resume Next For Each objWorksheet In objWorkbook.Worksheets If (UCase(objWorksheet.Name) = "Foo") Then objWorksheet.Select Range("Q2").Select ElseIf (UCase(objWorksheet.Name) = "Bar") Or (UCase(objWorksheet.Name) = "Poo") Then objWorksheet.Select Set Myrange = ActiveSheet.Range("D51:AA76") For Each cell In Myrange.Cells If strPattern <> "" Then strInput = cell.Value strReplace = "" With regEx .Global = True .MultiLine = True .IgnoreCase = False .Pattern = strPattern End With Set regExCount = regEx.Execute(strInput) If regExCount.Count = 0 Then strOutput = strOutput + "Illegal character at " + cell.AddressLocal + "\r\n" End If Next cell End If Next MsgBox (strOutput) End Sub 

当我编译时,我在下一个单元格中出现Next没有For循环的错误。 删除该行,我得到一个错误块如果没有结束Ff突出显示结束小组。 添加一个End如果在End Sub之前,我得到一个没有For错误的Next。

是不是这个块丢失,如果结束?

  If strPattern <> "" Then strInput = cell.Value strReplace = "" 

你的

 If strPattern <> "" Then 

之间没有closures

  End If ' regExCount.Count Next cell ' In Myrange.Cells