2015-06-10 29 views
0

我想寫一個簡單的代碼,根據某些條件過濾掉數據。「無效的下一個控制變量參考」錯誤在Excel VBA

我的代碼如下:

Public Function fGetUniqInitiative(Optional ByVal uniqInitiative As Variant, Optional ByVal filter1 As Variant, Optional ByVal filter2 As Variant, Optional ByVal filter3 As Variant, Optional ByVal vartempData As Variant) As Variant() 

Dim lngcounterinitiatve As Long 
Dim lngVarData As Long 
Dim lngfilter1 As Long 
Dim lngfilter2 As Long 
Dim lngfilter3 As Long 
Dim boolfilter1 As Boolean 
Dim boolfilter2 As Boolean 
Dim boolfilter3 As Boolean 
Dim varUniqueList() As Variant 
Dim lnguniqueinitcount As Long 
lnguniqueinitcount = 0 

For lngcounterinitiative = LBound(uniqInitiative) To UBound(uniqInitiative) 
    boolfilter1 = False 
    boolfilter2 = False 
    boolfilter3 = False 

    For lngVarData = LBound(vartempData) To UBound(vartempData) 

     If uniqInitiative(lngcounterinitiative) = vartempData(lngVarData, 2) Then 

      For lngfilter1 = LBound(filter1) To UBound(filter1) 
       If vartempData(lngVarData, 9) = filter1(lngfilter1) Then 
       boolfilter1 = True 
       Exit For 
       End If 
      Next lngfilter1 

      For lngfilter2 = LBound(filter2) To UBound(filter2) 
       If vartempData(lngVarData, 10) = filter2(lngfilter2) Then 
       boolfilter2 = True 
       Exit For 
       End If 
      Next lngfilter2 

      For lngfilter3 = LBound(filter3) To UBound(filter3) 
       If vartempData(lngVarData, 11) = filter3(lngfilter3) Then 
       boolfilter3 = True 
       Exit For 
       End If 
      Next lngfilter3 

      If boolfilter1 = True Or boolfilter2 = True Or boolfilter3 = True Then 
      Exit For 
      Else 
      lnguniqueinitcount = lnguniqueinitcount + 1 
      ReDim varUniqueList(1 To lnguniqueinitcount) 
      End If 

     End If 

     Next lngVarData 

Next lngcounterinitiatve 

fGetUniqInitiative = varUniqueList 

End Function 

然而,當我嘗試編譯它給出了錯誤代碼「無效的下一個控制變量參考」。我已經使用了相當多的代碼,所有的解決方案都表示我必須錯過關閉循環,我認爲這不是我的代碼中的情況。任何人都可以指出我錯過了什麼?

+0

Typo - lngcounterinitiatve。 –

回答

1

lngcounterinitiative在「Next lngcounterinitiatve」中拼寫錯誤。請嘗試更改。