• ベストアンサー
  • すぐに回答を!

VBAでFormat がうまく使えない

  • 質問No.1121147
  • 閲覧数10915
  • ありがとう数10
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 92% (12/13)

たびたびお世話になっています。
今回は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

出るエラーは「コンパイルエラー:プロジェクトまたはライブラリが見つかりません」です。

簡単なことなのかも知れませんが、これでは他の方に使って頂けなくて困っています。
お知恵をお貸し下さい。

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

  • 回答No.4
  • ベストアンサー

ベストアンサー率 26% (51/192)

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

お礼率 92% (12/13)

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

その他の回答 (全4件)

  • 回答No.5

ベストアンサー率 26% (51/192)

ライブラリー名はわかりますか?
お礼コメント
lamplight

お礼率 92% (12/13)

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

ベストアンサー率 62% (785/1258)

AloneAgain さんが回答されたとおり、参照設定が原因でしょう。

>同じ環境(同じPC・同じEXCEL)で新規ファイルを作成し、同じ表記をすると
>普通にFormat関数が使用できます

ここまでされているのだから、あとは、「OKなファイル」と「NGのファイル」の参照設定を比較してみれば、解決できるかと思います。
お礼コメント
lamplight

お礼率 92% (12/13)

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

ベストアンサー率 71% (285/400)

こんにちは。

「ライブラリが見つかりません」というエラーなら参照設定の問題かと思うのですが・・

VisualBasicEditorを開いて、メニュー「ツール」-「参照設定」を見てください。

"参照不可" と表示されているものがありませんか?
あれば、そのチェックをはずして確認してください。


↓の参考URLはOFFICE2000のものですが、同じエラーに関する記述です。
お礼コメント
lamplight

お礼率 92% (12/13)

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

ですが、原因さえわかれば何とかなると思います。
参考のURLまで探してくださいまして、丁寧な説明本当に有難うございました。
助かりました!
投稿日時:2004/12/10 16:41
  • 回答No.1

ベストアンサー率 34% (11/32)

Dim strMonth As String → Dim strMonth As Date
に変更されてはいかがでしょうか?
補足コメント
lamplight

お礼率 92% (12/13)

早速のご返答ありがとうございます。
データ型はStringからDateに変えてみましたが、エラー内容に変わりはありませんでした。
実際新規ブックを作成した場合はString型でも問題無く動きます。
エラーはこのプロシージャに入る前(その行にたどり着く前)に出るのでどうやら実際のデータ型などは関係ないようです…。
せっかくお答え頂きましたのに申し訳ありません。


あと、うっかりしてましたが、
If intOkCancel = vbCancel Then
MsgBox "集計を中止します", vbOKOnly, "集計中止"
Exit Do
End If
は Exit Sub が正しいですね.ここに移すときのミスです;これによるエラーではないですので改めてここで書かせていただきます。
投稿日時:2004/12/10 16:02
お礼コメント
lamplight

お礼率 92% (12/13)

今回はちょっと教えていただいたこととは違うことが原因でしたが、なんとか解決できそうです。
すぐのご返答うれしかったです。お心砕いていただきましてありがとうございました!
投稿日時:2004/12/10 16:47
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ