Visual Basic で Excel ワークシート関数を使用する

Visual Basic ステートメントでは、ほとんどの Microsoft Excel ワークシート関数を使用できます。 使用できるワークシート関数の一覧については、「Visual Basic で使用できるワークシート関数一覧」を参照してください。

注:

一部のワークシート関数は Visual Basic では役に立ちません。 たとえば、Visual Basic では & 演算子を使って複数の文字列を結合できるので、Concatenate 関数は使わなくても済みます。

Visual Basic からワークシート関数を呼び出す

Visual Basic では、WorksheetFunction オブジェクトを介して Excel ワークシート関数を使用できます。

次の Sub プロシージャでは、Min ワークシート関数を使用してセルの範囲内の最小値を特定します。 まず変数 myRangeRange オブジェクトとして宣言し、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 のサポートおよびフィードバックを参照してください。