質問: フォームモジュール イベントが発動しない半角→全角 コマンドボタンのコントロール名に「カード」(←これは半角です)とつけて、クリックイベントのプロシージャーを紐づけようとしたら、 private sub カード_click() end sub になってしまい、そのコマンドボタンをクリックしてもイベントが発生しません。 private sub カード_click()の部分にブレークポイントを設置しても、通過されません。 都合上全て半角でコントロール名をつけてしまったため、コントロール名を変えたくないのですが vbaのフォームモジュールで「カード」(←これは半角です)とすると、 勝手に全角になってしまうのですが、 この機能を止める方法はありますか?
回答: > この機能を止める方法はありますか? こちらの環境(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にする。 <余談> > コントロール名を変えたくないのですが もしも単純に手間の問題だけなら、改名処理の自動化コードを 作成して・・・と思ったのですが、「アルファベットや数字の半角/ 全角の混在の維持」と「濁音/半濁音の変換」の両立が面倒 だったので(汗)、今回は保留とさせて戴きました。 (「アルファベットや数字は半角に統一も可」といった前提があれば 濁音・半濁音の処理も簡素になるんですが)