2014-10-28 135 views
0

我是vb.script的新手,所以這可能只是一個格式問題,我找不到答案。 問題是驗證同一工作簿中不同工作表上的單元格中的數據。嵌套...每個循環與If語句

循環通過工作表,然後通過細胞循環範圍:

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 

我編譯時得到一個接着的誤差沒有在對於下一個信元環。刪除該行,我得到一個塊的錯誤如果沒有結束Ff突出顯示結束小組。添加一個End如果在End子之前,我得到一個沒有For For錯誤的Next。

回答

1

是不是這個塊丟失和結束?

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

If strPattern <> "" Then 

End If ' regExCount.Count 
Next cell ' In Myrange.Cells 
之間關閉