1
Public Function GetRowToWriteOn(ByVal SheetName As String, ByVal id As Integer) As Integer
    LastRow = ActiveSheet.UsedRange.Rows.Count
    myarray = Sheets(SheetName).Range("d7:d" & LastRow).Value
    For row = 1 To UBound(myarray, 1)
        If (myarray(row, 1) = id) Then
            Return row
        End If
    Next
End Function

IDE は予期されるステートメントの終わりを示します。(idが同じ行を返す?)

私は VBA にはまったく詳しくありませんが、Microsoft のこの例を見ると、うまくいくはずですか? :

Return ステートメントは、戻り値を代入すると同時に関数を終了します。次の例はこれを示しています。

Function myFunction(ByVal j As Integer) As Double
   Return 3.87 * j
End Function
4

2 に答える 2

6

VBA では、return キーワードを使用して値を返すことはありません。これは、他の言語ではカスタムになっているためです。試す:

GetRowToWriteOn = row  

関数名は、単独で変数として機能します。

于 2012-06-28T08:20:31.523 に答える
0
Public Function GetRowToWriteOn(ByVal SheetName As String, ByVal idnr As Integer) As Integer
    LastRow = ActiveSheet.UsedRange.Rows.Count
    myarray = Sheets(SheetName).Range("d7:d" & LastRow).Value
    For row = 1 To UBound(myarray, 1)
        If (myarray(row, 1) = idnr) Then
            GetRowToWriteOn = row
            Exit Function
        End If
    Next
    GetRowToWriteOn = UBound(myarray, 1) + 1
    Exit Function 'Probably not needed :)
End Function
于 2012-06-28T08:48:42.430 に答える