• ベストアンサー

アドインの「分析ツール」にチェックを入れてもEoMonthが使えない。

いつもお世話になっております。 早速ですが、EoMonthを使って今月末日を取得したいのですが 実行するとコンパイルエラーになります。 エラーメッセージは  SubまたはFunctionが定義されていません。 です。 タイトルにも記述したようにアドインの 「分析ツール」にチェックを入れても同様の エラーが出ます。 何かほかに設定しなくてはいけないのでしょうか? また現在は以下の方法で取得しようとしていますが、他に 取得方法がございましたら教えてください。 Dim iLastDay As Integer iLastDay = Day(EoMonth(textBox1.Text, 0)) Excel2007を使用しています。 よろしくお願いします。

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

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.3

既に回答は出てますが。。。 一行で書くと '------------------------------------------ iLastDay = Day(DateSerial(Year(TextBox1.Text), Month(TextBox1.Text) + 1, 0)) '------------------------------------------- TextBox1の値は単なる文字列であるにも拘わらず上記コードが上手くいくのは それをVBA側で日付として処理してくれるからです。 当方なら確実を期すためにVBA任せにせずこちら側でそれらを処理させます。 '-------------------------------------------  Dim myDate As Date  Dim myLastDate As Date  Dim iLastDay As Integer  myDate = DateValue(TextBox1.Text)  myLastDate = DateSerial(Year(myDate), Month(myDate) + 1, 0)  iLastDay = Day(myLastDate)  MsgBox myDate & vbLf & myLastDate & vbLf & iLastDay '---------------------------------------------- 実際にはエラー処理が必要であることは言うまでもありません。    

dodory
質問者

お礼

ご回答ありがとうございます。 上記の方法で取得することができました。 ありがとうございました。 またよろしくお願いします。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

ほんとに少し勉強して使っているのかな。 (1)エクセルのワークシートの関数とVBAでそれを使うのとは別。 VBAでは使えない関数もある。 関数の解説本によると、VBAで使えるかどうか、注記した本も見たことが有る。WEBでも全一覧はないかも。 (2)つかえる場合でも Application.WorksheetFunction.を関数名の前につける。 ーー Sub test01() MsgBox Date MsgBox DateSerial(Year(Date), Month(Date) + 1, 0) MsgBox Application.WorksheetFunction.eomonth(Date, 0) End Sub でやると、最後の行でエラーになる。EoMonthは使えない部類では。 今月末などでは、上記第2行目の方法が定石的に使われると思う。 ーーー GOOGLEで「VBA eomonth」で照会すると、記事が出るじゃない。見てから質問してますか。 第1記事で http://oshiete1.goo.ne.jp/qa3164570.html?ans_count_asc=20 など 「EOMONTHはVBAでは使えないので別な方法でやります」と出ています。

dodory
質問者

お礼

ご回答ありがとうございます。 おっしゃる通り勉強不足でした。 とても参考になりました。 またよろしくお願いします。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

EXCEL VBA http://questionbox.jp.msn.com/qa3164570.html こちらかな?

dodory
質問者

お礼

ご回答ありがとうございます。 参考にさせていただきました。 またよろしくお願いします。

関連するQ&A