- ベストアンサー
アドインの「分析ツール」にチェックを入れてもEoMonthが使えない。
いつもお世話になっております。 早速ですが、EoMonthを使って今月末日を取得したいのですが 実行するとコンパイルエラーになります。 エラーメッセージは SubまたはFunctionが定義されていません。 です。 タイトルにも記述したようにアドインの 「分析ツール」にチェックを入れても同様の エラーが出ます。 何かほかに設定しなくてはいけないのでしょうか? また現在は以下の方法で取得しようとしていますが、他に 取得方法がございましたら教えてください。 Dim iLastDay As Integer iLastDay = Day(EoMonth(textBox1.Text, 0)) Excel2007を使用しています。 よろしくお願いします。
- みんなの回答 (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 '---------------------------------------------- 実際にはエラー処理が必要であることは言うまでもありません。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
ほんとに少し勉強して使っているのかな。 (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では使えないので別な方法でやります」と出ています。
お礼
ご回答ありがとうございます。 おっしゃる通り勉強不足でした。 とても参考になりました。 またよろしくお願いします。
- n-jun
- ベストアンサー率33% (959/2873)
EXCEL VBA http://questionbox.jp.msn.com/qa3164570.html こちらかな?
お礼
ご回答ありがとうございます。 参考にさせていただきました。 またよろしくお願いします。
お礼
ご回答ありがとうございます。 上記の方法で取得することができました。 ありがとうございました。 またよろしくお願いします。