Excel VBA で次のようなコードを標準モジュールに記述し実行したところ Format()関数のところでエラーになりました。


=================================================
Option Explicit

Sub Test()
Dim strDate As String

strDate = Format(Date, "yymmdd")
MsgBox strDate
End Sub
=================================================

<エラーメッセージ>
「コンパイルエラー
 引数の数が一致していません。または不正なプロパティを指定しています。」

Format() 関数の引数は間違っていません。
別のブックで標準モジュールを作成し、全く同じコードを実行させたところ、正常に動作しました。
あるブックでのみこの現象が発生します。

ということは、このコード自体には問題はないと思うのですが…。
同Project内でFormat() というSub, Function, 変数 等は定義していません。

どのような状況下でこの現象が発生するのか、ご教授いただければと思います。

WinXP
Excel2000
です。よろしくお願い致します。

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2006/11/11 23:33:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:ota2244 No.5

回答回数77ベストアンサー獲得回数4

ポイント100pt

特定のブックでエラーが発生するということですと、VBAの中間ファイルが破損している可能性があります。


1.ソースコードをエクスポート

2.ブックからソースを解放(削除)

3.ブックを保存

4.エクスポートしたソースをインポート


上記の手順で、中間ファイルが再生成されますので、修正されるかもしれません。

id:azami606

解決出来ました!

どうもありがとうございました。


原因は中間ファイルが壊れていた、ということで間違いない…のですよね?

今後は気をつけるように致します。


これで質問を終了します。

お答えくださった皆様、ありがとうございました。

2006/11/11 23:30:03

その他の回答4件)

id:llusall No.1

回答回数505ベストアンサー獲得回数61

ポイント25pt

はずしていたらすみません。


VBAのエディタを起動します。

メニューから[ツール]-[参照設定]を開きます。


「参照不可」になっている項目があり、チェックオンされていたら、オフにしてください。

id:azami606

確認しましたが、違うようです。

ありがとうございました。

2006/11/08 22:24:59
id:mitou73 No.2

回答回数67ベストアンサー獲得回数5

ポイント25pt

外してるかも知れませんが、昔のEXCELでは分をm、月をMとして区別してたんではなかったでしょうか?

strDate = Format(Date, "yymmdd")

 ↓

strDate = Format(Date, "yyMMdd")

上記のように、mをMに変更してみたら、どうでしょう?

id:azami606

質問文にも書きましたがコード自体は間違っていないように思うのです。

また、それですとエラーその種類も違います。

念のため確認しましたが、やはり同じエラーが発生しました。

ご回答ありがとうございました。

2006/11/11 09:46:47
id:taknt No.3

回答回数13539ベストアンサー獲得回数1198

ポイント25pt

質問にあるものだけで実行してみたところ、何のエラーも出ませんでした。

質問内容以外に記述している何か 別のものは ありませんか?

それが 原因かもしれません。

ソースを分解し、少しずつテストしてみてください。

そうすれば、他のソースとの因果関係が判明するかもしれません。

id:azami606

時間がかかったためレスが遅くなってしまいました。すみません。

他ソースとの因果関係は発見できませんでした。

ありがとうございました~。

2006/11/11 23:24:22
id:robbie21 No.4

回答回数35ベストアンサー獲得回数1

ポイント25pt

Format関数を、どこかで自分で定義していませんか。

例えば、以下のコードは同様のエラーを返します。


Sub Test()
    Dim strDate As String
    
    strDate = Format(Date, "yymmdd")
    MsgBox strDate
End Sub

Sub Format()
    
End Sub

どこで定義しているかは、VBE内でコードを表示した状態で、

"Format"の文字の上で右クリック=>[定義]

で表示出来ます。

正常ならば、オブジェクトブラウザが開いて、VBA.StringsのメンバとしてFormat関数が表示されます。

確認してみてください。

id:azami606

質問文にも書きましたがFormat() というSub, Function, 変数 等は定義していません。

ただF2以外のチェック方法を知らなかったので勉強になりました。

コードつきで説明くださりありがとうございます。

2006/11/11 09:57:11
id:ota2244 No.5

回答回数77ベストアンサー獲得回数4ここでベストアンサー

ポイント100pt

特定のブックでエラーが発生するということですと、VBAの中間ファイルが破損している可能性があります。


1.ソースコードをエクスポート

2.ブックからソースを解放(削除)

3.ブックを保存

4.エクスポートしたソースをインポート


上記の手順で、中間ファイルが再生成されますので、修正されるかもしれません。

id:azami606

解決出来ました!

どうもありがとうございました。


原因は中間ファイルが壊れていた、ということで間違いない…のですよね?

今後は気をつけるように致します。


これで質問を終了します。

お答えくださった皆様、ありがとうございました。

2006/11/11 23:30:03

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません