VBやVBAの祝日判定用マクロ実装でのエラーについて

このQ&Aのポイント
  • VBやVBAの祝日判定用マクロをVB2008で実装しようとした際に、エラーが発生しました。
  • エラーの原因は、文字列から日付型への変換が正しく行われないことです。
  • このエラーを解決するためには、適切な方法で文字列を日付型に変換する必要があります。
回答を見る
  • ベストアンサー

VBAおよびVB用の祝日判定用マクロ

VB2008です インターネットにて関数アドインを公開されているサイトがあり http://www.h3.dion.ne.jp/~sakatsu/holiday_logic.htm#VBA その祝日判定用マクロをVB2008で実装しようとコピペしたら その内容で Const cst振替休日施行日 As Date = "1973/4/12"     (他同様行複数あり) の部分が『'String' から 'Date' への変換は定数式では発生しません。』とエラーが出ます ExcelVBAでは動作OKでした エラーの原因(VBでは直接文字列日付はダメ)はわかるのですが "1973/4/12"をDate型に変えようとDate.Parse("1973/4/12") に変えたら 『定数式が必要です。』とまたエラーが出ます ご教授お願いします

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

  • ベストアンサー
  • OMEGAT
  • ベストアンサー率70% (455/642)
回答No.1

いろいろな方法があったと思いますが、日付の定数は #月/日/年# と書くのが簡単だと思います。 [例] Const cst振替休日施行日 As Date = #4/12/1973#

Alshark
質問者

お礼

なるほど~(^-^) 動作しました、ありがとうございます。独学でVBA・VBを頑張っているのですが、まだまだ知らないことが多くて悪戦苦闘の毎日です でもまたそれが楽しいんですがね(笑)

関連するQ&A

  • VB6で外部から静的アクセスが可能な定数

    VB6で(正確にはExcelVBAですが)ちょっとプログラムを組んでいるのですが、 クラス内で、外部からアクセス可能な静的定数を宣言を行いたいのですが、 宣言方法が分からず止まってしまいました。 出来たかどうかも記憶にありません・・・。調べても分からず;; Static Const var As String = "hoge" みたいな事をしたいんですが、やり方が分かる方ご教示下さい。

  • const 宣言に式を使う。

    クラス内の定数宣言でconstを使いたいんですけど、 constでは式を使うとエラーになるようで、 define() からそのまま const にすることができません。 どうにかしてconstで式を使えるように出来ないでしょうか?

    • ベストアンサー
    • PHP
  • VB2008で定数に色の設定をしたいです。(初心者)

    VB2008で定数に色の設定をしたいです。(初心者) VB2008初心者です。 定数に色の設定をしたいのですがなかなか上手く設定出来ません。 変数に設定は出来るのですが、 Dim COLOR As System.Drawing.Color = COLOR.Red 定数にした場合エラーになります。 Public Const COLOR As System.Drawing.Color = COLOR.AliceBlue 色々他も試してみたのですが・・初歩的な質問で申し訳ありません。 設定は「System.Drawing.Color」でなくても良いのですが、 どなかたかご教授頂きたく宜しくお願い致します。

  • const 宣言ができない。

    バージョンは PHP 5.0.4 です。 5.0以降、constを使ってクラス内で定数を宣言できるようなのですが、 使うと Parse error: parse error, unexpected T_VARIABLE in ... とエラーが出てしまいます。 サポートしていないんでしょうか? 参考 http://phpspot.net/php/pg%83N%83%89%83X%93%E0%82%C5%82%CC%92%E8%90%94.html

    • ベストアンサー
    • PHP
  • PHP5でクラス定数が使えますが

    PHP5でクラス定数が使えますが 以下のようにFで A + Eや A | Eなどとすると、 Parse errorとなります。 クラス定数は数値、文字列、配列のみで、組み合わせは不可という仕様で良いのでしょうか? PHP5の仕様書というものはネット上で存在しているのでしょうか? 英語でも構いませんので、ご存知の方教えてください。 class Test { const A=1; const B="2"; const C=array(3); const E=4; const F=A+E; // ここでエラー } この場合の対策ですが、素直にPHP4のように defineを使えば良いでしょうか?

    • ベストアンサー
    • PHP
  • vb.net 今日の日付を取得

    vb.net 今日の日付を取得 vbaの Sub vba() MsgBox Date End Sub をvbでやるとどうなるのでしょう? Private Sub Button1_Click(ByVal s MessageBox.Show date End Sub だと、 エラー 1 'Date' は型です。有効な式ではありません。 エラー 2 メソッドの引数は、かっこで囲む必要があります。 エラー 3 '.' が必要です。 と、3つのエラーになります。 ご教授よろしくお願い致します。

  • VBAの定数の使い方で、計算値を定数に入れることは可能ですか。

    VBAの定数の使い方で、計算値を定数に入れることは可能ですか。 例えば、モジュール先頭に、 Option Explicit Const TEISU_COUNT As Integer = Application.WorksheetFunction.CountA(Range("A1:IV1")) と書き、その下に、 Sub TestTeisu()   MsgBox TEISU_COUNT   '↑定数式が必要です、のようなエラーが出ます。なぜでしょう?   'エラー時、「.CountA」にスポットがあたります。   'つまり、ここがダメということでしょうか?やはり、この点が動的だからでしょうか? End Sub と書いて、実行。 結果は、上述の通り、エラーとなります。 やはり、定数値には、固定的な数値(上記例では、Integer)や文字列を入れるべきなのでしょうか。 定数に入れることのできる値の注意事項について、 どなたかアドバイスして頂けますでしょうか。 宜しくお願い致します。

  • 定数の設定について。

    こんにちは!WIN2000、VB6、SP5で開発しています。 仕事で今プログラミングしてるのですが、定数で困ってます。 悩んでるのは、 定数を宣言する標準モジュールがあって、 そこの定数にINIファイルから読み込んだ値を代入して、 どこからでも読み込めるようにする。 というところなのです。 Public Const gstrMoji = "文字列" このように宣言すると分かったのですが、 例えば下のように、INIファイルから読み込んで文字列を入れようとすると、 Public Const gstrMoji = iniFileLoad("テスト", "答え") iniFileLoadのところで、定数式が必要です。とエラーになってしまいます。 ちなみに、iniFileLoadっていうのは、別のモジュールに書いた関数式?を呼んでます。 登録や編集してるフォームではちゃんと動いてるので、 コード自体に問題があるわけじゃないと思ってます。 ためしに、フォームロードとかで定数を宣言してやろうとしたら、 ここでは宣言出来ません。みたいになって、どうしていいか困ってしまいました。 INIファイルから読み込んだデータを定数に代入する方法、 ご存知の方いらっしゃいましたら、どうぞご教授よろしくお願いしますm(_ _)m

  • 定数配列の書き方

    VB6で定数を定義する場合は次の通りです。   Const strTest As String = "TEST" では、定数配列を定義する場合はどのように書けばいいのでしょう?   Const astrTest() As String = Array("A", "B", "C")      '→NG   Const astrTest(0 To 2) As String = Array("A", "B", "C")  '→NG いろいろな書き方を試して見たのですが、上記のような書き方でも文法的にエラーになるようです。 どのように書けばいいのでしょうか? それとも定数を配列で定義するのは無理なんでしょうか?

  • 「定数式が必要です。」って何のこと?

    ExcelVBAで作成したマクロでデータ抽出を行なっていたのですが、 数日前に動作していたマクロが、突然に、 「定数式が必要です」というエラーが出てきて動かなくなりました。 VBAの仕様が変わったのでしょうか? ★エラーの発生したモジュール Option Explicit Dim MailCc As String Sub Mailer() (中略) MailTo = Cells(RW_TO, 2).Text ' 宛先 → MailCc = Cells(RW_CC, 2).Text ' CC (以下略) ★同一プロジェクトの別モジュール Global Const RW_CC = 18

専門家に質問してみよう