- ベストアンサー
VBAフォームモジュールでコマンドボタンのイベントが発生しない問題
- VBAフォームモジュールでコマンドボタンに「カード」(半角)というコントロール名を付けても、クリックイベントが発生しません。
- Private Sub カード_Click()の部分にブレークポイントを設置しても、通過されません。
- コントロール名を変えずに、VBAのフォームモジュールで「カード」(半角)とすると、自動的に全角に変換されてしまいます。この変換を止める方法はありますか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> この機能を止める方法はありますか? こちらの環境(Access2007/WinXP Home)で確認した限りでは、 止める方法はないようです。 ただ、半角カタカナのコントロールであっても、以下の方法でSub プロシージャを生成させた場合は、半角カタカナが維持されます。 ポイントは、 【プロシージャ名を手入力せず、コード ビルダに作成させる】 ことです。 1)当該イベントのコードを既に組んでいる場合は、Visual Basic Editor(VBE)画面で、一時的にプロシージャ名を変更 (「Private Sub カード_Click()」→「Private Sub ★カード_Click()」) 2)当該フォームをデザインビューで開き、プロパティシートの当該 イベント欄にカーソルを移動 3)同イベント欄の右端に表示される「...」(ビルダ)ボタンをクリック 4)『ビルダの選択』ダイアログが開いた場合は、「コード ビルダ」を 選択して『OK』ボタンをクリック *下記注記参照* 5)半角カタカナでSubプロシージャが生成されたのを確認したら、 必要なコードを記述 (手順「1」でコードが既存の場合は、中身をCut&Pasteして、 元のSubプロシージャは削除) ・・・以上です。 <注記> 既に設定されているかもしれませんが、イベント発生時の処理を 専らVBAで行う場合は、以下の設定を行うと、『ビルダの選択』 ダイアログの表示を省略できます: ((Access2007以降)) 『Access のオプション』ダイアログで『オブジェクト デザイナー』を 選択し、『フォーム/レポート』領域の「常にイベント プロシージャ を使用する(E)」のチェックをOnにする。 (上記ダイアログは、Access2007ではOfficeボタンのクリックで 表示されるメニューの最下方の『Access のオプション』ボタン、 Access2010では『ファイル』タブの最下方の『オプション』ボタン から、それぞれ開けます) ((Access2003以前)) Accessのメニューで「ツール(T)→オプション(O)...」を選択して 『オプション』ダイアログを開き、『フォーム/レポート』タブ内にある 「常にイベント プロシージャを使用する(E)」のチェックをOnにする。 <余談> > コントロール名を変えたくないのですが もしも単純に手間の問題だけなら、改名処理の自動化コードを 作成して・・・と思ったのですが、「アルファベットや数字の半角/ 全角の混在の維持」と「濁音/半濁音の変換」の両立が面倒 だったので(汗)、今回は保留とさせて戴きました。 (「アルファベットや数字は半角に統一も可」といった前提があれば 濁音・半濁音の処理も簡素になるんですが)
お礼
ありがとうございます。