2012-01-20 6 views
0

私は、セルの値がゼロ大きいですが、それが動作していない最初のセルのアドレスを返す必要がありEXCEL VBA機能を持っています。なぜ誰かがアイデアを持っていますか?は、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'ループで始めるには、' i = UBound(ColArray)To 0 step -1'のように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