• ベストアンサー

Access2002:コマンドボタンがうまく設定できません

使い始めてから2週間目の初心者です。よろしくお願いします。 コマンドボタンウィザードでフォーム上にコマンドボタンを作成したのですが、クリックしても反応しません。 初めは問題なく作成できたのですが、突如としてうまく動作するボタンが作成できなくなってしまいました。 ウィザードで作成した「レコードの検索」ボタンですら無反応です。 あるフォームのイベントプロージャ(?)は以下のようになっています。 (★はコメントです) Option Compare Database Private Sub テスト15:09_Click() End Sub Private Sub 部番一覧→部番詳細フォーム_Click()★←正しく動作しているボタン★ On Error GoTo Err_部番一覧→部番詳細フォーム_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "部番詳細表示" stLinkCriteria = "[部番]=" & "'" & Me![部番] & "'" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_部番一覧→部番詳細フォーム_Click: Exit Sub Err_部番一覧→部番詳細フォーム_Click: MsgBox Err.Description Resume Exit_部番一覧→部番詳細フォーム_Click End Sub←★この下に区切り線が表示されません★ Private Sub テスト15:09_Click()★←無反応のボタン。文字色赤になっています★ On Error GoTo Err_テスト15:09_Click Screen.PreviousControl.SetFocus DoCmd.DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70 Exit_テスト15:09_Click: Exit Sub Err_テスト15:09_Click: MsgBox Err.Description Resume Exit_テスト15:09_Click End Sub 単純ミスだと思うのですが、原因がわかりません。 どなたかわかりやすく教えいただけないでしょうか。ちなみにVBの知識は皆無です。よろしくお願いします。

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

  • ベストアンサー
  • gadd3
  • ベストアンサー率46% (211/451)
回答No.1

> End Sub←★この下に区切り線が表示されません★ > Private Sub テスト15:09_Click()★←無反応のボタン。文字色赤になっています★ ということですと、「テスト15:09」という名前のコントロールの、名前の付け方がひっかかっているのではないでしょうか?特に「:」の部分です。 通常、コントロールの名前に記号など(%、”、$、&、!、:、。、などなど…)を使うと今回の例のように「何かの拍子に」文字色赤になって動かなくなります。 何かの拍子…というのは、mdbファイルを別のパソコンにコピーしてコピー後のmdbを開いたり、強制終了させておかしくなったり・・・などです。 直すには、いったんプロシージャを消して、mdbファイルを起動しなおし、もう一度コントロールのプロパティの該当するイベントから入りなおし、プログラムコードを書くことです。いったんmdbを起動し直せば、コードを書くのはコピペでOKです。 今回の場合ですと、「Private Sub テスト15:09_Click()」から最後の「End sub」までを全ていったん消します。で、mdbを再起動させたあとに、もう一度コントロールのプロパティからクリックイベントを開いて、 On Error GoTo Err_テスト15:09_Click Screen.PreviousControl.SetFocus DoCmd.DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70 Exit_テスト15:09_Click: Exit Sub Err_テスト15:09_Click: MsgBox Err.Description Resume Exit_テスト15:09_Click の部分をコピペします。 ************************************ ただ、コントロール名が同じままだと、この問題は再度繰り返し出てきます。 なので、この際、コントロールの名前を変えてから(:を使わない名前に変えてから)、コードをコピペするといいと思います。 また、このようなトラブルは、連結フォーム(連結テキストボックス)にありがちなトラブルですので、テーブルを作る時点で、フィールドの名前の付け方に注意しないといけない…ということにもなります。 まったくの見当違いでしたらごめんなさい。

cholodenko
質問者

お礼

やはり文字の種類に制限があったのですね。 とりあえず無反応のプロシージャを消して、特殊文字が入らないコントロール名で設定しなおしたらちゃんと動作するようになりました。 どうもありがとうございました。

その他の回答 (1)

  • ryuu001
  • ベストアンサー率61% (46/75)
回答No.2

同じ名前のSubがあるのが原因のようです。 >Option Compare Database > >Private Sub テスト15:09_Click() > >End Sub この部分のSubが呼ばれているようです。 >Private Sub テスト15:09_Click()★←無反応のボタン。文字色赤になって>います★ そのため、ここがエラーを表示する 文字色赤になっているのでしょう。

cholodenko
質問者

お礼

上記の箇所も削除し、#1のかたのアドバイスに従い作成しなおしたらうまく動作するようになりました。どうもありがとうございました。

関連するQ&A

  • アクセスのイベント記述について。

    アクセスのあるフォームA上にある詳細ボタンをクリックすると別のフォームCが開くようにしてあるのですが、クリックすると同時にAフォームを閉じるにはどのように記述したらよいでしょうか? 詳細ボタンの記述は下記のとおりです。よろしくお願いいたします。 Private Sub 詳細_Click() On Error GoTo Err_詳細_Click Dim stDocName As String Dim stLinkCriteria As String DoCmd.Close stDocName = ChrW(12513) & ChrW(12531) & ChrW(12486) & ChrW(12490) & ChrW(12531) & ChrW(12473) stLinkCriteria = "[管理番号]=" & Me![管理番号] DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_詳細_Click: Exit Sub Err_詳細_Click: MsgBox Err.Description Resume Exit_詳細_Click End Sub

  • Accessでの VBのコーディングを教えて下さい。

    今回、初めてAccessで「顧客管理」を作成しています。 1対多のテーブルで、フォームを作成して、 サブフォームに表示されている多側のテーブルのレコードを、1レコードづつフォームで開きたいのですが、 今のコーディング(下記に表示)では、 既存のレコードしか開けません。 これに、新規のフォームを開いてレコードの追加も行いたいので、良かったらどなたかコーディングを教えて頂けませんでしょうか?宜しくお願いします。 Private Sub 売上メインボタン_Click() On Error GoTo Err_売上メインボタン_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "売上登録メインフォーム" stLinkCriteria = "[売上キー]=" & Me![売上キー] DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_売上メインボタン_Click: Exit Sub Err_売上メインボタン_Click: MsgBox Err.Description Resume Exit_売上メインボタン_Click End Sub

  • XPアップロード後のアクセスの不具合

    「新規フォームを開く」フォームボタンがXPのアップロード後「コンパイルエラー」と表示されるようになりました。 詳細は下記の通りで、1行目が全て黄色くなっていました。もしおわかりでしたら、お助けください。 よろしくお願いします。 ----------------------------------------------- Private Sub 商品コードスキャンを開く_Click() On Error GoTo Err_商品コードスキャンを開く_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = ChrW(21830) & ChrW(21697) & ChrW(12467) & ChrW(12540) & ChrW(12489) & ChrW(12473) & ChrW(12461) & ChrW(12515) & ChrW(12531) DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_商品コードスキャンを開く_Click: Exit Sub Err_商品コードスキャンを開く_Click: MsgBox Err.Description Resume Exit_商品コードスキャンを開く_Click End Sub ----------------------------------------------

  • XPのアップロードとアクセスの相性?

    アクセス2000ですが、どうもつい最近のXPの アップロードとの相性が悪いようです。 ある特定のフォームを開こうとすると、 「コンパイルエラー」という表示が出てきます。 下記のビジュアルベーシックの部分がおかしいようですが、わかる方アドバイスをお願いします。 特にstDocName = ChrW(12487) あたりが怪しそうです。 ------------------------------------------------------- Private Sub 実行ボタン_Click() On Error GoTo Err_実行ボタン_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = ChrW(12487) & ChrW(12540) & ChrW(12479) & ChrW(20837) & ChrW(21147) DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_実行ボタン_Click: Exit Sub Err_実行ボタン_Click: MsgBox Err.Description Resume Exit_実行ボタン_Click End Sub ----------------------------------------------------------- ちなみに、システムの復元で数日戻すとこの現象は起こらなくなりますが、数日ごとに元の戻す、というのも根本的ではないので・・・

  • アクセスのイベント記述について。

    あるフォーム(患者IDで検索した結果を表示した表形式のフォーム)でコマンド30をクリックしたら、別の入力画面が開くように設定したのですが、患者IDのみ一致したフォームが開くようにはなったのですが、これプラス、依頼日も一致したフォームが開くようにしたいです。以下の記述に変更を加えるとしたら、どのようにしたらよいのでしょうか?よろしくお願いいたします。 Private Sub コマンド30_Click() On Error GoTo Err_コマンド30_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = ChrW(81) & ChrW(58) & ChrW(26908) & ChrW(20307) & ChrW(21029) & ChrW(20837) & ChrW(21147) & ChrW(-238) stLinkCriteria = "[患者ID]=" & Me![患者ID] DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_コマンド30_Click: Exit Sub Err_コマンド30_Click: MsgBox Err.Description Resume Exit_コマンド30_Click End Sub

  • Access フォームで検索した結果をフォームで表示するときにあいまい検索をしたい

    Access2003を使用して、検索フォームをつくり、検索結果を別フォームへ表示させるプログラムを組みました。 その際に、かな検索をするとかなが完全一致でないと検索されません。 あいまい検索にてかな検索をする方法はありませんでしょうか? ソースは以下の通りです。 Private Sub cmdSearch_Click() On Error GoTo Err_cmdSearch_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = ChrW(70) & ChrW(95) stLinkCriteria = "[カナ氏名]=" & "'" & Me![カナ氏名] & "'" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_cmdSearch_Click: Exit Sub Err_cmdSearch_Click: MsgBox Err.Description Resume Exit_cmdSearch_Click End Sub

  • 検索時のみデータの変更を不可

    検索条件を入力するフォームA、検索でヒットしたレコードを表形式で表示するフォームB、フォームBにて詳細ボタンをクリックすると、単票形式のフォームCを表示する設定にしてあります。 このうち、フォームCはデータを入力するときに使用しています。 検索でヒットさせた場合のみ、フォームCのデータを変更できないようにするにはどうしたらいいでしょうか? よろしくお願いします。 下記のVBAが、フォームBの詳細ボタンをクリックしたときに、フォームCを開くためのコードです。 このVBAのどこに入れたらいいでしょうか? よろしくお願いします。 なお、このVBAはウィザードで作成されたものです。 Private Sub cmd詳細_Click() On Error GoTo Err_cmd詳細_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = ChrW(102) & ChrW(114) & ChrW(109) & ChrW(-28982) & ChrW(20001) & ChrW(12487) & ChrW(12540) & ChrW(12479) stLinkCriteria = "[ID]=" & Me![ID] DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_cmd詳細_Click: Exit Sub Err_cmd詳細_Click: MsgBox Err.Description Resume Exit_cmd詳細_Click End Sub

  • Access2000でフォームを開くときに常に新規レコードで開きたいのですが

    Access2000で、あるイベントに参加した人のデータベースを作りました。 検索用フォームで「氏名」と「生年月日」で検索し、その人の情報を別の フォームで見ることができるようになっています。 該当者がいない場合は、新しいレコードにそのデータを追加します。 検索結果を表示するフォームに個人情報を表示・書き込みできる画面を開く ためのボタンがあるのですが、このボタンをクリックした時に、常に新規 レコードで開きたいのですが、コードはどのように記述すればよろしいの でしょうか? ちなみに、いまは下記のようなコードになっています。 「新規登録ボタン」は個人情報を表示・書き込みできる画面を開くためのボタン 「応募者」は個人情報を表示・書き込みできるフォーム です。 Private Sub 新規登録ボタン_Click() On Error GoTo Err_新規登録ボタン_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "応募者" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_新規登録ボタン_Click: Exit Sub Err_新規登録ボタン_Click: MsgBox Err.Description Resume Exit_新規登録ボタン_Click End Sub

  • アクセスにて検索フォームを作りたい

    お世話になります。 アクセス初心者です。 会社名検索フォームに会社名を入力して表示コマンドをクリックすると 会社フォームの入力した会社が表示されるようにしたいのです。 現在は、表示コマンドをクリックすると会社フォームが開きます。 どの会社名を打ち込んでもNo.1のレコードしか開きません。 つまり会社フォームが開く という指示をしているだけです。 コードなど全く分かりません。 ただ、本を見て真似て下記の通り入力してみました。 間違っているor足りない ということはわかっていますが、 どう入力すれば良いのかわかりません。 教えて下さい。よろしくお願いいたします。 Private Sub cmd表示_Click() On Error GoTo Err_cmd表示_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "会社フォーム" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_cmd表示_Click: Exit Sub Err_cmd表示_Click: MsgBox Err.Description Resume Exit_cmd表示_Click End Sub

  • accessで、フォームの検索をしたいのです。

    今ACCESSで、データ管理をしているのですが、どうしてもうまくいかなくて、困っています。 毎日の出来事を記述するテーブル用のフォームを作って、記述していて、そのデータがたまってきています。 他のフォームに、検索用のテキストボックスとコマンドボックスを作って検索したいのです。 コントロールウィザードを使うと、完全一致のデータしかでてこないのですが、部分一致のレコードを表示させるにはどうすればいいのですか? 教えていただけるとうれしいです。 コントロールウィザードを使うと以下のようになります。多分少しどこかを変えるといいのではないかと思うのです。どうか、よろしくお願いします。 Private Sub コマンド144_Click() On Error GoTo Err_コマンド144_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = ChrW(21839) & ChrW(12356) & ChrW(21512) & ChrW(12431) & ChrW(12379) & ChrW(12513) & ChrW(12514) stLinkCriteria = "[内容]=" & "'" & Me![テキスト105] & "'" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_コマンド144_Click: Exit Sub Err_コマンド144_Click: MsgBox Err.Description Resume Exit_コマンド144_Click End Sub もしかして。。と思い、以下の部分、 stLinkCriteria = "[内容]=" & "'" & Me![テキスト105] & "'" を次のように変えてみたけれど、やっぱりうまくいきませんでした。 stLinkCriteria = "[内容]=" & "'" & "*" & Me![テキスト105] & "*" & "'" よろしくお願いします。