• ベストアンサー

Visual Basicで使えないExcel関数

Visual Basic EditorにてExcel関数(具体的に書くとEDATE関数等)を使いたいのですが、対応していないものが多く使うことが出来ません。 どうにかして使いたいのですが、皆目検討がつきません。 ご存知の方は教えていただければ幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.3

VBAでExcelのワークシート関数を使用するには、通常はApplication.WorksheetFunction をつかいます。 Application.WorksheetFunction.Vlookup(......) など。 しかし、WorksheetFunctionで使える関数は限られており、EDATEは含まれていません。したがって、VBAで同じ動作を行う処理を書く必要があります。 EDATE(A,B)は日付AからB月後の月の最後の日を求める関数なので、これはB+1月後の1日から-1することで同じ結果が得られます。 したがって、VBAの中では DateSerial(Year(A), Month(A) + B + 1, 1) - 1 で求めることができます。

c3108
質問者

お礼

浅学のためApplication.WorksheetFunctionを知りませんでした。教えてくださりありがとうございます。

その他の回答 (3)

回答No.4

先ほどの回答はVBなのかVBAなのかわらなかったので、VBのケースで書きました。

回答No.2

EXCELの関数をそのまま使用するなら下記のようにする手があります。 例えばMin、Max関数はVBにはありませんが Data=Application.Max(”A1:A20”) Data=Application.Min(”A1:A20”) などと記述すれば該当範囲のMax,Minの数値を得ることができます。 その他にも、同様な使い方が可能ですが、すべてこれでいけるか実証してはいません。確認して使ってください。

回答No.1

EDATE関数って指定日のXヶ月後(前)の日付を返す関数ですよね? (実はあまり詳しくは知らないのですが・・・) ならば、VBのDateAdd関数で代用は出来ないですか? 的外れならごめんなさい。

c3108
質問者

お礼

EDATEについてはDateAddを使うことで何とかなりそうです。ありがとうございます。

関連するQ&A

専門家に質問してみよう