Visual Basic で Excel ワークシート関数を使用する
Visual Basic ステートメントでは、ほとんどの Microsoft Excel ワークシート関数を使用できます。 使用できるワークシート関数の一覧については、「Visual Basic で使用できるワークシート関数一覧」を参照してください。
注:
一部のワークシート関数は Visual Basic では役に立ちません。 たとえば、Visual Basic では & 演算子を使って複数の文字列を結合できるので、Concatenate 関数は使わなくても済みます。
Visual Basic からワークシート関数を呼び出す
Visual Basic では、WorksheetFunction オブジェクトを介して Excel ワークシート関数を使用できます。
次の Sub プロシージャでは、Min ワークシート関数を使用してセルの範囲内の最小値を特定します。 まず変数 myRange
を Range オブジェクトとして宣言し、Sheet1 の範囲 A1:C10 に設定します。 別の変数 answer
には、Min 関数を myRange
に適用した結果を割り当てます。 最後に、answer
の値がメッセージ ボックスに表示されます。
Sub UseFunction()
Dim myRange As Range
Set myRange = Worksheets("Sheet1").Range("A1:C10")
answer = Application.WorksheetFunction.Min(myRange)
MsgBox answer
End Sub
引数として範囲の参照を必要とするワークシート関数を使用する場合は、Range オブジェクトを指定する必要があります。 For example, you can use the Match worksheet function to search a range of cells. In a worksheet cell, you would enter a formula such as =MATCH(9,A1:A10,0). However, in a Visual Basic procedure, you would specify a Range object to get the same result.
Sub FindFirst()
myVar = Application.WorksheetFunction _
.Match(9, Worksheets(1).Range("A1:A10"), 0)
MsgBox myVar
End Sub
注:
Visual Basic 関数は WorksheetFunction 修飾子を使用しません。 A function may have the same name as a Microsoft Excel function and yet work differently. For example, Application.WorksheetFunction.Log
and Log
will return different values.
ワークシート関数をセルに挿入する
ワークシート関数をセルに挿入するには、対応する Range オブジェクトの Formula プロパティの値として関数を指定します。 次の使用例では、作業中のブックのシート 1 で範囲 A1:B3 の Formula プロパティに、乱数を発生させる RAND ワークシート関数を割り当てます。
Sub InsertFormula()
Worksheets("Sheet1").Range("A1:B3").Formula = "=RAND()"
End Sub
例
次の使用例は、 Pmt ワークシート関数を使用して、家のローンの支払いを計算します。 InputBox 関数の代わりに InputBox メソッドを使用することに注意してください。 Static ステートメントで指定されている 3 つの変数は保存され、次回の実行時に既定値として表示されます。
Static loanAmt
Static loanInt
Static loanTerm
loanAmt = Application.InputBox _
(Prompt:="Loan amount (100,000 for example)", _
Default:=loanAmt, Type:=1)
loanInt = Application.InputBox _
(Prompt:="Annual interest rate (8.75 for example)", _
Default:=loanInt, Type:=1)
loanTerm = Application.InputBox _
(Prompt:="Term in years (30 for example)", _
Default:=loanTerm, Type:=1)
payment = Application.WorksheetFunction _
.Pmt(loanInt / 1200, loanTerm * 12, loanAmt)
MsgBox "Monthly payment is " & Format(payment, "Currency")
関連項目
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示