• ベストアンサー

VBAでFormat がうまく使えない

たびたびお世話になっています。 今回はVBAでの基本的な関数であろうFormat関数について質問させて頂きます。 現在 WindowsME / EXCEL2002 でマクロ・VBAを使用した日報を製作しています。 その中で、設定欄で入力した日付をソース内でFormat関数で形式を変えて表示させようとしているのですが、EXCEL97の環境に持っていくとエラーが出て使用できません。 EXCEL97で使えないのかと思いましたが、同じ環境(同じPC・同じEXCEL)で新規ファイルを作成し、同じ表記をすると普通にFormat関数が使用できます。 これはいったい何がまずくてエラーが出てしまうのでしょうか。 一応ソースは以下の通りです。 Private Sub cmd_run_Click() Dim strMonth As String Dim intOkCancel As Integer '' 処理実行確認 strMonth = Worksheets("設定").Range("C12").Value strMonth = Format(strMonth, "yyyy年m月") intOkCancel = MsgBox(strMonth & "の日報集計を開始します。よろしいですか?", vbOKCancel, "集計開始") If intOkCancel = vbCancel Then MsgBox "集計を中止します", vbOKOnly, "集計中止" Exit Do End If ''集計 Call S_Run End Sub 出るエラーは「コンパイルエラー:プロジェクトまたはライブラリが見つかりません」です。 簡単なことなのかも知れませんが、これでは他の方に使って頂けなくて困っています。 お知恵をお貸し下さい。

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

  • ベストアンサー
  • WWolf
  • ベストアンサー率26% (51/192)
回答No.4

「参照設定」の問題です。 97側のエクセルでVBEを起動しツール->参照設定で参照不可を探して、まずはチェックを外してみて実行してみてください。

lamplight
質問者

お礼

ご返答有難うございます。 他の方もお教え下さった通り、参照設定がおかしくなっていたようです。 現在なぜか使っていないはずなのにチェックがはずせませんが、原因がわかればなんとかなると思います。 お答え有難うございました。

その他の回答 (4)

  • WWolf
  • ベストアンサー率26% (51/192)
回答No.5

ライブラリー名はわかりますか?

lamplight
質問者

お礼

お気にかけていただきありがとうございました。 お礼が遅くなって申し訳ありませんでした。 ライブラリ名なども解らずじまいで、結局、データなどを新しいワークブックにコピーして作業を続けてしまいました。 せっかくお答えいただいたのに恩を仇で返すことになってしまい申し訳ございません。 今後はこのようなことがないように努めたいと思います。 また何かございましたらよろしくお願い致します。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

AloneAgain さんが回答されたとおり、参照設定が原因でしょう。 >同じ環境(同じPC・同じEXCEL)で新規ファイルを作成し、同じ表記をすると >普通にFormat関数が使用できます ここまでされているのだから、あとは、「OKなファイル」と「NGのファイル」の参照設定を比較してみれば、解決できるかと思います。

lamplight
質問者

お礼

ご返答有難うございます。 確かにお教えいただいた通り、「参照不可」の参照設定ライブラリが2つもありました! 特別使用した記憶がなかったため、こんなところで引っかかるとは思いもせず・・・。 まだ削除には時間がかかるようですが、手がかりも頂きましたしこれからなんとかしていこうと思います。 的確なご返答ありがとうございました。

回答No.2

こんにちは。 「ライブラリが見つかりません」というエラーなら参照設定の問題かと思うのですが・・ VisualBasicEditorを開いて、メニュー「ツール」-「参照設定」を見てください。 "参照不可" と表示されているものがありませんか? あれば、そのチェックをはずして確認してください。 ↓の参考URLはOFFICE2000のものですが、同じエラーに関する記述です。

参考URL:
http://support.microsoft.com/default.aspx?scid=kb;ja;208218
lamplight
質問者

お礼

早速のご返答有難うございます。 参照設定確認して見ました。 相しましたら、確かに「参照不可」のものが2つも表示されていました。 いったいいつからこんなものが・・・とびっくりしています。 原因はこれだとはわかったのですが、特別なコントロールを使用しているわけでもないのに(使用しているのはチェックボックスとコマンドボタンのみです)「使用中のため削除できません」とメッセージが出て削除できませんでした。 ですが、原因さえわかれば何とかなると思います。 参考のURLまで探してくださいまして、丁寧な説明本当に有難うございました。 助かりました!

回答No.1

Dim strMonth As String → Dim strMonth As Date に変更されてはいかがでしょうか?

lamplight
質問者

お礼

今回はちょっと教えていただいたこととは違うことが原因でしたが、なんとか解決できそうです。 すぐのご返答うれしかったです。お心砕いていただきましてありがとうございました!

lamplight
質問者

補足

早速のご返答ありがとうございます。 データ型はStringからDateに変えてみましたが、エラー内容に変わりはありませんでした。 実際新規ブックを作成した場合はString型でも問題無く動きます。 エラーはこのプロシージャに入る前(その行にたどり着く前)に出るのでどうやら実際のデータ型などは関係ないようです…。 せっかくお答え頂きましたのに申し訳ありません。 あと、うっかりしてましたが、 If intOkCancel = vbCancel Then MsgBox "集計を中止します", vbOKOnly, "集計中止" Exit Do End If は Exit Sub が正しいですね.ここに移すときのミスです;これによるエラーではないですので改めてここで書かせていただきます。

関連するQ&A

専門家に質問してみよう