2013-07-04 182 views
1

我相信這是一個簡單的問題,但似乎無法在WWW上找到任何明確的內容。VBA識別範圍內的數字

我需要我的代碼來識別列中的1到9之間的任何數字,以便爲該範圍拋出錯誤,我目前只能使用一個數字來處理它。

Public Sub ErrorCheck() 
Dim FindString As String 
Dim Rng As Range 
FindString = "" 
If VBA.Trim(FindString) <> "" Then 
With Sheets("Scoring").Range("S:S") 
    Set Rng = .Find(What:=FindString, _ 
        After:=.Cells(.Cells.Count), _ 
        LookIn:=xlValues, _ 
        LookAt:=xlWhole, _ 
        SearchOrder:=xlByRows, _ 
        SearchDirection:=xlNext, _ 
        MatchCase:=False) 
    If Not Rng Is Nothing Then 
     MsgBox "Error", True 
    Else 

    End If 
End With 
End If 
End Sub 

感謝您的幫助!

回答

1

您可以對所需的所有值迭代執行您的代碼。例如:

Public Sub ErrorCheck() 
    Dim FindString As String 
    Dim Rng As Range 
    Dim startVal As Integer, endVal As Integer 

    startVal = 1 
    endVal = 9 

    For i = startVal To endVal 
     FindString = CStr(i) 
     With Sheets("Scoring").Range("S:S") 
      Set Rng = .Find(What:=FindString, _ 
        After:=.Cells(.Cells.Count), _ 
        LookIn:=xlValues, _ 
        LookAt:=xlWhole, _ 
        SearchOrder:=xlByRows, _ 
        SearchDirection:=xlNext, _ 
        MatchCase:=False) 
      If Not Rng Is Nothing Then 
       MsgBox "Error", True 
       Exit For 
      Else 

      End If 
     End With 
    Next i 

End Sub 
+0

感謝您的快速反應varocarbas!我剛剛解僱了這個,我想我缺少一個庫,用於'For i = startVal to endVal'代碼的一部分。你知道什麼庫需要嗎?再次感謝! – Methexis

+0

圖書館?這是執行startVal(本例中爲1)和endVal(本例中爲9)的典型循環。被增加的值(i)被轉換成一個字符串並作爲輸入給你的代碼。也就是說,它用10個不同的輸入執行10次(如果在結束前發現匹配,則停止嘗試)。這就是你想要的,不是嗎?......如果你的意思是我把它從哪裏拿出來的,我在看到你的問題後立即創建它。或者如果你的意思是你需要執行for ... next,你不需要任何東西,它是VBA基本命令之一。 – varocarbas

+0

這聽起來不錯....但是當我運行代碼'找不到項目或庫'時它會拋出編譯錯誤,再次感謝! – Methexis