教えて!goo限定 1000名様に電子コミック1000円分が当たる!!

コマンドボタンのコントロール名に「カード」(←これは半角です)とつけて、クリックイベントのプロシージャーを紐づけようとしたら、

Private Sub カード_Click()
End Sub

になってしまい、そのコマンドボタンをクリックしてもイベントが発生しません。

Private Sub カード_Click()の部分にブレークポイントを設置しても、通過されません。
都合上全て半角でコントロール名をつけてしまったため、コントロール名を変えたくないのですが
VBAのフォームモジュールで「カード」(←これは半角です)とすると、
勝手に全角になってしまうのですが、
この機能を止める方法はありますか?

このQ&Aに関連する最新のQ&A

A 回答 (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にする。


<余談>

> コントロール名を変えたくないのですが

もしも単純に手間の問題だけなら、改名処理の自動化コードを
作成して・・・と思ったのですが、「アルファベットや数字の半角/
全角の混在の維持」と「濁音/半濁音の変換」の両立が面倒
だったので(汗)、今回は保留とさせて戴きました。
(「アルファベットや数字は半角に統一も可」といった前提があれば
 濁音・半濁音の処理も簡素になるんですが)
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2013/06/02 18:24

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q半角カタカナがVBAだと全角カタカナになる

フォームを作って「フォーム1」にしてその上に「テキスト1」を置きました。(どちらも半角です)

Private Sub Form_Open(Cancel As Integer)
Form_フォーム1.テキスト1.Value = "a"
End Sub
にすると自動でフォームがフォームのように全角になります。

なのでこの状態でフォームを開こうとすると、
Form_フォーム1の部分でコンパイルエラーになります。
(変数が定義されてません)

Private Sub Form_Open(Cancel As Integer)
Me.テキスト1.Value = "a"
End Sub
にするとうまく行きました。

でもテキスト1は、半角のままです。

フォームだけが全角になってしまいます。これは何と言う現象でしょうか?
なるべくオブジェクト名には半角を使わない方がいいのですか?

・・・と今質問分を書いて見直したら、gooでも半角を全角に自動修正するんですね。

Aベストアンサー

当方の場合、オブジェクト名に半角カタカナを使用したケースは皆無です。
なんとなくですがエラーの種になりそうな・・・。
Access2010ですが少し試してみました。
フォーム名を半角カタカナで『カタカナ』にした場合

1・Form_カタカナ
2・Forms!カタカナ
3・forms("カタカナ")
3の場合のみ半角カタカナのままで、1・2は全角カタカナに置き換えられてしまいます。
どうしても半角カタカナのフォーム名にしたいのなら、3の方法かと思います。
(お勧めしているわけではありません)
なお、オブジェクト名中にアンダーバーを使用する場合があるので
1のフォーム指定方法は使ったことが有りません。

なぜ置き換えられてしまうのか?はよく分かりませんが
アスキーコードの128からはコードページによって変わりますので
その辺が関係してくるのかな???と思います。(文字化け対策?)
日本語の場合
http://yellow.ribbon.to/~netnetnet/VB/memo/VB_ascii_128-255.html
ヨーローッパ語圏?
http://msdn.microsoft.com/ja-jp/library/cc392379.aspx

当方の場合、オブジェクト名に半角カタカナを使用したケースは皆無です。
なんとなくですがエラーの種になりそうな・・・。
Access2010ですが少し試してみました。
フォーム名を半角カタカナで『カタカナ』にした場合

1・Form_カタカナ
2・Forms!カタカナ
3・forms("カタカナ")
3の場合のみ半角カタカナのままで、1・2は全角カタカナに置き換えられてしまいます。
どうしても半角カタカナのフォーム名にしたいのなら、3の方法かと思います。
(お勧めしているわけではありません)
なお、オブジェクト名中...続きを読む

QAccessのマクロでモジュールを実行させたい。

Access2002を勉強中の初心者です。

AccessでDB1という名前のデータベースを作成し、その中で、モジュール1というモジュールを作成しました。これを実行するマクロを作成したく、次のようにマクロを作成しました。
マクロのデザイン画面でアクションに「プロージャの実行」を選択、プロージャ名入力覧の右側の...のボタンを押して式ビルダ画面を表示、ここの「関数」フォルダを開いてDB1を選択、表示されたモジュール1を貼り付けてOK。
しかし、このマクロを実行すると、次のエラーとなります。「DB1 指定されたDB1が見つけることができない関数名が含まれています」

根本的に方法が間違っているのでしょうか?
アドバイスをよろしくお願いします。

Aベストアンサー

#1です。

ちょっと時間ができたので、Accessのヘルプで、
 "RunCode/プロシージャの実行" アクション
についてのトピックを見てみました。

結論から言うと、基本的な考え方が間違っているみたいです^^;。

「プロシージャの実行」アクションでは、「Function」プロシージャを指定するようです。
Subプロシージャではエラーになります。


つまりご質問の件では、
「Subプロシージャを呼び出すFnctionプロシージャ」をまず書かなけれえばならない。
そして、マクロのアクションでは、あらためてこのFunctionプロシージャを指定しなければいけません。


人気Q&Aランキング