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/06 23:22:06
  • 終了:2006/11/11 23:33:03

ベストアンサー

id:ota2244 No.5

ota2244回答回数77ベストアンサー獲得回数42006/11/10 17:39:41

ポイント100pt

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


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

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

3.ブックを保存

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


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

id:azami606

解決出来ました!

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


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

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


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

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

2006/11/11 23:30:03

その他の回答(4件)

id:llusall No.1

llusall回答回数505ベストアンサー獲得回数612006/11/06 23:31:45

ポイント25pt

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


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

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


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

id:azami606

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

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

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

mitou73回答回数67ベストアンサー獲得回数52006/11/07 00:58:48

ポイント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ベストアンサー獲得回数11982006/11/07 08:54:31

ポイント25pt

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

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

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

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

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

id:azami606

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

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

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

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

robbie21回答回数34ベストアンサー獲得回数12006/11/09 06:42:31

ポイント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

ota2244回答回数77ベストアンサー獲得回数42006/11/10 17:39:41ここでベストアンサー

ポイント100pt

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


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

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

3.ブックを保存

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


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

id:azami606

解決出来ました!

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


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

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


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

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

2006/11/11 23:30:03

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

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません