2012-01-20 108 views
0

我有一個EXCEL VBA函數,它應該返回單元格值大於零但不工作的第一個單元格的地址。有沒有人有一個想法,爲什麼?excel vba:函數返回值奇怪

代碼:

Function FindNextFilledCell(RowArray() As Integer, ColArray() As Integer) 

For i = UBound(ColArray) To 0 
    For j = UBound(RowArray) To 0 
     CellValue = cells(RowArray(j), ColArray(i)).Value 
     If CellValue > 0 Then 
      FindNextFilledCell = cells(RowArray(j), ColArray(i)).Address(False, False) 
      Exit Function 
     End If 
    Next j 
Next i 

End Function 
+1

要開始一個向後的For循環,需要一個Step-1下降1 For I = UBound(ColArray)To 0 Step -1'。你怎麼調用這個函數? – brettdj

+0

@brettdj:我從來沒有見過一個負面的UBound ......我會說你應該發佈這個答案:) – JMax

+0

@Jmax也許我應該有:)。但是我沒有像我認爲的功能應該被重寫,一旦我們明白它在做什麼 - 我懷疑循環是必要的 – brettdj

回答

2

我還是想知道,你正在嘗試做的,但我建議的第一個錯誤是:

For i = UBound(ColArray) To 0 

,而不是

For i = UBound(ColArray) To 0 step -1 

這假設你打算按相反的順序搜索單元格。如果你沒有

For i = 0 to UBound(ColArray) 

可能會更好。

我發現的下一個錯誤是你沒有定義函數返回值的類型。試着:

FindNextFilledCell(RowArray() As Integer, ColArray() As Integer) As String 
+0

嗨。恩,那就對了。忘記步驟1。謝謝 – user366121