関数・メソッド

WorkSheetFunctionに対応していない関数を使いたい【Evaluateメソッド】【ExcelVBA】

Evaluateメソッド

ワークシート関数を使用したいのにWorkSheetFunctionプロパティでは使用できない関数があります。
そんなときはEvaluateメソッドを使用すると、より多くのワークシート関数を扱えるようになります。

構文
Evaluate (Name)

NameExcelの名前付け規則を使用した、対象オブジェクトの数式または名前です。255字以内。必須。

Evaluateメソッドを使ったサンプルコード

'■EvaluateメソッドとAVERAGE関数
Public Sub Sample()
  Range("A1:D5") = 3  '数値を入れる
  
  Dim ave As Long
    ave = Evaluate("AVERAGE(A1:D5)")
  Debug.Print ave '3
  
End Sub


'■EvaluateメソッドとDATEDIF関数
Public Sub Sample2()
  'DATEDIF関数を使う
  Dim i As Long
  i = Evaluate("DATEDIF(""2005/3/1"",""2016/2/28"",""Y"")")
  Debug.Print i  '10

End Sub

Public Sub Sample3()
 'セルからデータを拾う
  Cells(1, 1) = "2005/3/1"    '入社日を入力
  Cells(1, 2) = "2016/2/28"   '退職日を入力
  
  'Evaluateメソッドを使って勤続年数を計算する
  Range("C1") = _
      Evaluate("DATEDIF(""" & Range("A1") _
          & """,  """ & Range("B1") & """," _
          & """Y""" & ")")
End Sub

注意点

  • Evaluateメソッドはカッコ内にダブルクォーテーションを付けて、関数を文字列として認識させています。
    さらに関数の引数を区別するための「”」と、その「”」を記号だと判断するための「”」を記述する必要があるため上記サンプルのように「”」を重ねます。

関連記事

コメント

タイトルとURLをコピーしました