0

私の問題は、どの関数 (C++ の場合) またはメソッド (Java の場合) が VBA で呼び出されるかわからないという事実です。

それらは両方とも存在するので、私は潜水艦を調べましたか? これは類似していると思いますが、私が理解していることから何も返されません。

私は VBA の正式なトレーニングを受けていないので、これは苦手です。この for ループが行っていることを行う関数 (またはメソッドまたはサブ) を作成したい:

useInput = titles.Text
useRec = rec.Text
lastRow = 1

For Each rngCell In rngData.Columns(1).Cells 'Traverse each row in Spreadsheet
If useInput = rngCell.Value And LCase(useRec) = LCase(Cells(lastRow, 2)) Then 'If what the user input into the textbox matches a value in the spreadsheet
    bothExist = True 'Set this to true, because both exist

    otherUserForm.Show 'Call another userform created

    titles = "" 'Set entries to null
    rec = ""
    Exit For 'Exit the for loop
    End If
    lastRow = lastRow + 1 'Counter
Next rngCell

したがって、ループの全体的なポイントは、スプレッドシートをトラバースし、最後の行を見つけて情報を入力することですが、タイトルとレコードが事前に存在するかどうかを確認してから、表示されていることを実行します。

私の質問は、「lastRow」を返すために何を作成する必要があるかということです。その数が何であれ必要だからです。

4

2 に答える 2

1
Function myFunctionName()
    ' do stuff
    myFunctionName = "hello world"
End Function

戻り値を関数の名前に割り当てることにより、関数に戻り値を割り当てます。次のように呼び出すことができます。

Sub myTest()
theReply = myFunctionName()
msgBox "the function returned " & theReply
End Sub

関数は値を返しますが、サブルーチンは返しません。

于 2013-03-20T00:11:36.810 に答える
1

VBA の関数はまさにそれです: 関数。:-)returnただし、Java や C/C++ に慣れていると、構文が奇妙になります (古いスタイルの Pascal です)。

Public Function GetLastRow()
   `Logic to determine last row here
   GetLastRow = lastRow    ` Assignment to function name sets return value
End Function
于 2013-03-20T00:12:16.687 に答える