2012-09-25 62 views
0

每次調用此函數都會導致運行時錯誤「13」類型不匹配。爲什麼會發生?循環訪問列時Excel宏「類型不匹配」錯誤

Public Function VersionExists(versionId As String) 

    VersionExists = False 

    For Each cell In Tabelle2.Columns(1) 
     If cell.Value = versionId Then 
     VersionExists = True 
     End If 
    Next 

End Function 
+0

使用'選項Explicit'建議,請!你將不得不明確聲明所有的變量,但它會大大減少這種錯誤的數量。 –

回答

2

這裏是一個選擇,因爲我在評論

Public Function VersionExists(versionId As String) As Boolean 
    Dim aCell As Range, rng As Range 

    Set rng = Tabelle2.Columns(1) 

    Set aCell = rng.Find(What:=versionId, LookIn:=xlValues, _ 
    LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ 
    MatchCase:=False, SearchFormat:=False) 

    If Not aCell Is Nothing Then VersionExists = True 
End Function 
5

不能從.Columns(1)訪問cell.value因爲它返回一個包含範圍內整列,代替;

For Each cell In Sheet1.Columns(1).Rows '//or .cells 

也許是一個好主意,在比賽結束後退出for循環。

+3

+ 1我也建議使用'.Find'來代替循環 –