- ベストアンサー
VBA 「実行時エラー"13"型が一致しません」の対処方法を教えてください
OKWebをはじめ、インターネットで質問をするのは、はじめてです。よろしくお願いします。 1ヶ月前から、年甲斐もなく老体に(66)鞭打ってVBAに挑戦しています。 開発をしているソフトは、ある組織の個人用の出納簿で、EXCELを知らなっくても、パソコンが少し触れるかたげ使用できる様にと思い取り組んでいます。 現在、ワークシート=3枚、ユーザフォーム=7枚、標準モジュール=4モジュールの作成を終えましたが、動作確認において、表題のエラーが出て、対応に苦労しています。 質問にあたり再現プログラムを作りましたから、ご指導よろしくお願いします。なお、開発環境は、WindowsXP、EXCEL2003です。 Sheet1 ⇒ 何も設定していません。 fom出納簿入力 ⇒ 作成済みのUserFormをインストールしました。 ⇒⇒ 新たにUserFormを定義すると正常に動作します。 <<ThisWorkbook>>の定義内容 Private Sub Workbook_Open() '--------<<タイトルバーの変更>> Application.Caption = "○○システム" ActiveWindow.Caption = "△△△" '--------<<ウィンドウの枠の最大化>> Application.WindowState = xlMaximized ActiveWindow.WindowState = xlMaximized '--------<<メニューバーのカスタマイズ>> subメニューバーカスタマイズ '--------<<ツールバーの非表示 Dim myCB As CommandBar On Error Resume Next For Each myCB In Application.CommandBars myCB.Visible = False Next myCB On Error GoTo 0 End Sub Sub subメニューバーカスタマイズ() Dim myCB As CommandBar, myCBCtrl As CommandBarControl '「ワークシートメニューバー」のすべてのコントロールを削除する Set myCB = Application.CommandBars("Worksheet Menu Bar") For Each myCBCtrl In myCB.Controls myCBCtrl.Delete Next myCBCtrl '-----[出納簿]メニューの作成 ----- Set myCBCtrl = myCB.Controls.Add(Type:=msoControlPopup) myCBCtrl.Caption = "出納簿" '-----[出納簿]→[出納簿(入力)]メニューの作成 ----- Set myCBCtrl = myCB.Controls("出納簿").Controls.Add(Type:=msoControlButton) myCBCtrl.Caption = "出納簿(入力)" myCBCtrl.OnAction = "sub出納簿入力" 'モジュール「サブルーチン」 End Sub (ThisWorkbookの定義は、内容をあまり理解せぬまま、参考書のサブルーチンを借用して、作成しました。) <<Module1>>の定義内容 Sub sub出納簿入力() Sheet1.Select ActiveWindow.Zoom = 125 UserForms("fom出納簿入力").Show End Sub エラーは、最後の「UserForms("fom出納簿入力").Show」で発生しています。 また、「入力」に対して「訂正」ルーチンを組んでいます。訂正を行う場合は、まず、InputBoxメソード対話型プロセジャーを使って、訂正行を取得します。そして、データベースの該当行の内容を「訂正」UserFormsに表示するために、プロパティに設定する場合にも、「実行時エラー"13" 型が一致しません。」となります。 コーディングの一部は次のとおりです。 my収入 = ActiveCell.Value ⇒ データベースから値を取得 fom出納簿訂正.cb金額.Value = my収入 上記2命令の間でmsgboxでmy収入の値を確認していますが、正しく設定されています。訂正ルーチンは3個ありますが、1個は上記のコーディングで正しく動作しますが、2個がエラーとなります。 何分VBAの素人ですから、具体的なご指導を賜れば幸いです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>UserForms("fom出納簿入力").Show fom出納簿入力.Show 名前合ってるのかな? 出納簿入力.Show か 出納簿(入力).Show かな?
その他の回答 (2)
- n-jun
- ベストアンサー率33% (959/2873)
n-junです。 >もし、このような処置で間違っていれば、コメントいただければ幸いです。 問題ないと思います。
お礼
n-junさん ご指導ありがとうございました。 明日、削除処理を行いたいと思います。
- n-jun
- ベストアンサー率33% (959/2873)
ANo.1です。 >なお、各UserFormsの前に統一して「fom」を付与し、fom○○簿入力、fom○○簿訂正に統一しています。 >また、各メニューバーの表示は、○○簿(入力)、○○簿(訂正・削除)としました。 >すべて統一した方がよいのでしょうか。 その点はyamato3zanさんの管理しやすい方法で良いと思いますよ。
補足
n-junさん ご回答ありがとうございます。 操作ミスで2重投稿してしまいましたが、明日、本質問について削除させていただこうと思っています。今後のご指導は、後発の質問で対応いただければ幸いです。 もし、このような処置で間違っていれば、コメントいただければ幸いです。
補足
n-junさん さっそく回答を頂きありがとうございます。 >UserForms("fom出納簿入力").Show は、ご指摘の通り修正を行い、また、UserFormsを入れ替えて確認しました。正常に動作しました。ありがとうございました。 なお、各UserFormsの前に統一して「fom」を付与し、fom○○簿入力、fom○○簿訂正に統一しています。 また、各メニューバーの表示は、○○簿(入力)、○○簿(訂正・削除)としました。 すべて統一した方がよいのでしょうか。