- 締切済み
超初心者です コマンドボタンのプロシージャの解説をお願いします
超初心者です。どうかご教授願います。 フォームで、コントロールウィザードを使い、コマンドボタンを使うと、 プロシージャには、下記の記述となりますよね。 それぞれの項目の意味をご解説いただければと思います。 --------------------------------------------------- Private Sub コマンド1_Click() -----------(1) On Error GoTo Err_コマンド1_Click -----------(2) DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 -----------(3) Exit_コマンド1_Click: -----------(4) Exit Sub -----------(5) Err_コマンド1_Click: -----------(6) MsgBox Err.Description -----------(7) Resume Exit_コマンド1_Click -----------(8) End Sub -----------(9) --------------------------------------------------- (1)・・・()は何の為にあるのですか?また、話は外れるのですが、「Click(Cancel As Integer)」とはどういう意味ですか? (2)・・・「エラー処理ルーチンを有効にする」というステートメントと本に書いてあるのですが、何のエラーですか? (3)・・・手持ちの本では全く分かりませんでした。各文字の意味からお教え願います。 (4)(6)・・・「Exit_コマンド1_Click」「Err_コマンド1_Click」という言葉は何ゆえ必要なのでしょうか?また最後の「:」は何を示しているのでしょうか? (5)・・・「ループやプロシージャから抜ける」と本に書いてあるのですが、この場合だと、何から抜けるのですか?抜けるとどこへ行くのですか? (7)・・・この場合だと、メッセージボックスには何が表示されるのですか? (8)・・・「Resume」はGoToとは何が違うのですか? (9)・・・「プロシージャやブロックを終了する」と本に書いてあるのですが、「Exit」とは何が違うのですか?
- PearlJam69
- お礼率58% (260/441)
- オフィス系ソフト
- 回答数3
- ありがとう数2
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- nicotinism
- ベストアンサー率70% (1019/1452)
1) この中に引数を入れます。 Sub Test(are As long) Msgbox are / 10 End sub とかいうのがあるとして test(100) と実行すると、メッセージボックスで、10 が返ってきます。 詳しくは、Ctrl + G (Ctrl を押しながら G)でイミディエイトウィンドウが開きます。 そこに、Sub と入れて F1 キーを押すと詳しくヘルプが出てきます。 2) 同じくイミディエイトウィンドウに Error と打ち込んでヘルプを出します。 一覧の中の、「Error 関数」 をクリック、「関連項目」をクリック、 「トラップできるエラー」 をクリックすると現れます。 当方Access2002ですのでバージョンが異なった場合は出し方は分かりません。 3) 恥ずかしながら、そこまで考えたことはありません。 End Sub へ飛ぶというよりも・・・うーん 何でしょね?明確に答えられません。
- nicotinism
- ベストアンサー率70% (1019/1452)
基本的にコードは上から一行ずつ処理されて進んでいきます。 東京駅から大阪まで鈍行列車に乗った時をイメージして下さい。 その時に乗るのを止めたい 横浜から一気に静岡まで行きたい 土砂崩れで運行停止や路線の迂回とかってありますよね? それと一緒です Private Sub コマンド1_Click() -----------(1) ~~~~~~~~~はコマンド1 をクリックしたときの処理ですという宣言 ここが始発駅で終点が、End Sub Cancel As Integer は乗ったこと(この場合はコマンド1をクリックした事) そのものを無かった事にしたい場合に使います。 Cancel = True Exit Sub などとセットで使います。 On Error GoTo Err_コマンド1_Click -----------(2) エラーが起こったときに此処(Err_コマンド1_Click:)へ飛んでね。という事です : が尻に付くとそこは「ラベル」(ワープ先)として扱われます とにかく問題時(エラー発生時)に(乗り換え案内)するようなもんです。 DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 -----------(3) これは・・自信が有りませんが、編集中のレコードを保存するという言う意味。 acMenuVer70 Access97 と互換の命令を使ってね ということ 書き換えると DoCmd.RunCommand acCmdSaveRecord と同義 Exit_コマンド1_Click: -----------(4) 前述のワープ先を示すラベルです Exit Sub -----------(5) これが無いとこの下のエラー処理まで進んでゆきますので、ここで途中下車 Err_コマンド1_Click: -----------(6) 前で説明しているつもり MsgBox Err.Description -----------(7) よく起き易いエラーには、番号や簡単な説明(Description)が予め用意されています。 エラーがあった時の説明を出してねという意味 Resume Exit_コマンド1_Click -----------(8) Goto は単純にラベルに飛ぶだけですが、Resume はエラーがあった時の分岐を 必要に応じて自動的に行う事が出来ます この例ではエラーが起こったときに運行停止ではなく Exit_コマンド1_Click へ飛んで後始末(料金払い戻しとか)を行うという意味 End Sub -----------(9) 本来の終着駅、 かなり乱暴な説明ですので分かってもらえないかも
- imogasi
- ベストアンサー率27% (4737/17068)
(1)フォームに最初に貼り付けたコマンドボタンがコマンド1で、それをクリックしたときにここに飛んできて、以下のコードを実行 (2)以下の実行で、何かエラーが起こればこのErr_コマンド1_Click 以下のステートメントへ行き、実行する。 (3)はメインでやりたいことが記述してある部分(後述) (4)Err_コマンド1_Click: という、位置に名前をつけたところ (5)このサブルーチンを抜けて、来たところに(クリックした前+本作業の)戻る。 (6)On Error GoTo Err_コマンド1_Click と書かれているところがあれば、ここへ飛んできて以下を実行する (7)エラーの具体的な情報がメッセージボックスに表示 (8)Exit_コマンド1_Click: の次ぎの行のステートメントから 実行再開。 このプロシージュアーでは、次がExit Subなので、このサブプロシージュアーを抜ける。 >プロシージャやブロックを終了する」と本に書いてあるのですが、「Exit」とは何が違うのですか? 途中から抜けるか、このプロシジュアーの終わりから抜けるかの違い。 >「Resume」はGoToとは何が違うのですか? 「Resume Next」と使う(エラーが起こったが、起こらない場合と同じ処理を続行する)ことが多いので、Resumeの存在感がある。 >・「ループやプロシージャから抜ける」と本に書いてあるのですが、この場合だと、何から抜けるのですか?抜けるとどこへ行くのですか? この場合はイベントプロシーキュアー(A)なので、コマンドボタンをクリックする前の状態といえばいいのかな。ただイベントプロシージュアーで色々何でも実行することをプログラムで記述できる(する場合がある)ので、その実行効果は残る。 「抜ける」「飛ぶ」「来る」「繰り回す」「ループする」「止まる」などのプログラム実行に関連した用語を使いますので、その意味を感じとってください。 (B)このプロシージュアーへ他のロシージュアーから飛んできた場合は、その飛んできた次のプログラム行に行く。 (A)、(B)の2類型が有ります。 >DoCmd.DoMenuItem DoCmd.DoMenuItem でWEB照会のこと。沢山でます。 ーー (6)以外はVB、VBA(アクセス)の本を読んでください。基礎的なだけに、説明が難しい。 イベントプロシジュアーの考えも解説を読んでください。 すなわち独学の難しさですね。
関連するQ&A
- アクセスのイベント記述について。
アクセスで登録ボタンをコントロールウィザードで作ったのですが、登録と同時にそのフォームを閉じるにはどうしたらよいでしょうか。現在の登録ボタンのイベント記述は下記のとおりです。よろしくお願いいたします。 Private Sub 登録_Click() On Error GoTo Err_登録_Click DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 Exit_登録_Click: Exit Sub Err_登録_Click: MsgBox Err.Description Resume Exit_登録_Click End Sub
- ベストアンサー
- オフィス系ソフト
- 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の知識は皆無です。よろしくお願いします。
- ベストアンサー
- その他(データベース)
- Access レコード削除時に「カレントレコードがありません」エラーが表示されてしまう
いつもお世話になっております。 フォームに「レコードの削除」ボタンを作成して実行したところ、 「カレントレコードがありません」と表示されてしまいます。 削除そのものは、正しく行われている(削除したいレコードが削除されている)のですが、 なぜ、そのようなメッセージが出てしまうのか分かりません。 他のフォームでは、削除するレコードが最後のレコードで無い限り、 そのようなメッセージは出ません。 また、そのフォームのレコードソースになっているクエリでは、 問題なく削除が実行されます。 削除ボタンの作成は、コントロールウィザードを使って行いました。 ちなみにVBAでは下記のような記述になっています。 Private Sub 削除テスト_Click() On Error GoTo Err_削除テスト_Click DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70 DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70 Exit_削除テスト_Click: Exit Sub Err_削除テスト_Click: MsgBox Err.Description Resume Exit_削除テスト_Click End Sub メッセージを表示させないためには、どのようにしたら良いでしょうか?? また、最後のレコードを削除した場合にも、 「カレントレコードがありません」メッセージを表示させなくするには どのようにしたら良いでしょうか? 教えてください。
- ベストアンサー
- オフィス系ソフト
- Access:クリック時のイベントについて
フォーム上にレポートのプレビューボタンをつけました。 複数のスタッフがデータ入力をしていて、自分が現在入力したデータをプリン トアウトしたいと思っています。 テーブルに『プレビュー』というチェック項目を作り、そこにチェックがはい っているデータをレポートに表示させるようにしていて、プレビューボタンを クリックした時のイベントを以下のように設定していますが、『コマンドまた はアクション'レコードの保存'は無効です。』というエラー表示が出てしまい ます。 どのように書き換えればよいかご存知の方がいたらお教えください。 また、他に『現在自分がフォームを使って入力しているデータのみをプリント する』良い方法をご存知の方がいらっしゃったらお教えください。 Private Sub レポートのプレビュー_Click() On Error GoTo Err_レポートのプレビュー_Click Me!プレビュー = True DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 Dim stDocName As String stDocName = ChrW(12463) & ChrW(12524) & ChrW(12540) & ChrW(12512) & ChrW(20966) & ChrW(29702) & ChrW(31080) & ChrW(40) & ChrW(12503) & ChrW(12524) & ChrW(12499) & ChrW(12517) & ChrW(12540) & ChrW(41) DoCmd.OpenReport stDocName, acPreview Exit_レポートのプレビュー_Click: Me!プレビュー = False DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 Exit Sub Err_レポートのプレビュー_Click: MsgBox Err.Description Resume Exit_レポートのプレビュー_Click End Sub
- ベストアンサー
- オフィス系ソフト
- アクセスVBAのエラーについて
フォームを閉じるためにフォームにボタンを置いて、イベントプロシージャに下記のように書き込みました。すると添付画像のエラーが返ってきてマクロが動きません。 Private Sub コマンド103_Click() On Error GoTo Err_コマンド103_Click DoCmd.Close Exit_コマンド103_Click: Exit Sub Err_コマンド103_Click: MsgBox Err.Description Resume Exit_コマンド103_Click End Sub で、「ファイル-オプション-現在のデータベース」の”フォームの表示”を問題のフォームに切り替えたら問題なく動作します。 つまり”フォームの表示”で選んだフォームでしかコマンドボタンのマクロが動きません。全てのフォームでマクロが動くにはどうしたらよいのでしょうか?
- 締切済み
- Access(アクセス)
- ACCESSのサブフォームコピーについて
ACCESSのサブフォームコピーについて お世話になります。色々検索してたのですがなかなか解決できず、教えて下さい。 下記のようなフォームがあります。 メインフォームにボタンを設置し、メインフォームとサブフォームを同時にコピーしたいです。 【メインフォーム】 ID(オートナンバー) 登録名 住所 電話番号 など 【サブフォーム】 SubID(オートナンバー) ID(メインフォームと連結) ライセンス数 開始日 など メインフォームの「内容のコピーを作成」ボタンのクリック時の[イベント プロシージャ]に下記が記載してあります。 --- Private Sub 内容のコピーを作成_Click() On Error GoTo Err_内容のコピーを作成_Click Select Case MsgBox(srchXls & "◆内容のコピーを作成しますか?◆", vbOKCancel) Case vbOK DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70 DoCmd.DoMenuItem acFormBar, acEditMenu, 2, , acMenuVer70 DoCmd.DoMenuItem acFormBar, acEditMenu, 5, , acMenuVer70 'Paste Append MsgBox (srchXls & Chr(13) & Chr(10) & "◆コピーを作成しました◆") Err_内容のコピーを作成_Click: Case Else Exit Sub End Select End Sub --- これではメインフォームのコピーしか出来ません。 サブフォームも一緒にコピーしたいのですが、どういった方法があるでしょうか。 宜しくお願いいたします。
- ベストアンサー
- その他MS Office製品
- GoToRecordで実行時エラー '2105'
教えてください。Access2000です。 Private Sub 次へ_Click() On Error GoTo Err_次へ_Click On Error Resume Next DoCmd.GoToRecord , , acNext Exit_次へ_Click: Exit Sub Err_次へ_Click: MsgBox ERR.Description Resume Exit_次へ_Click End Sub って書いたのですが、最後のレコードまで行った後 「次へ」をクリックすると実行時エラーになってしまいます。 移動できませんとかメッセージで逃げたいのですがどうすればいいのでしょうか? お願いします。
- ベストアンサー
- オフィス系ソフト
- アクセスのVBAについて、フォームの On Error Goto についておしえてください。
Private Sub cmd次_Click() On Error GoTo Err DoCmd.GoToRecord , , acNext Exit_Click: Exit Sub Err: MsgBox "この先にレコードがなくなると、ここをつうかするのだろうか。" Resume Exit_Click End Sub 一連の流れについて,ご解説ください。よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- Access[イベント プロシージャ]について質問です。
フォーム上にある『プリント』ボタンをクリックすると、レポートを印刷するようにしています。(以下のとおり) Private Sub レポートの印刷_Click() On Error GoTo Err_レポートの印刷_Click Dim stDocName As String stDocName = ChrW(12463) & ChrW(12524) & ChrW(12540) & ChrW(12512) & ChrW(20966) & ChrW(29702) & ChrW(31080) DoCmd.OpenReport stDocName, acNormal Exit_レポートの印刷_Click: Exit Sub Err_レポートの印刷_Click: MsgBox Err.Description Resume Exit_レポートの印刷_Click End Sub このプリントボタンをクリックした時に『印刷』というチェックボックスにチェックを入れるにはどのように書き換えればよいのでしょうか?
- ベストアンサー
- オフィス系ソフト
- access2000で作成のプログラムソースが2003で書き換わってしまう
初めて質問させていただくバイク好きのおじさんです。 環境はOS:Windows7(Ultimate) ソフトウエア:Office2003(pro) ソフトウエア:Office2007(Ultimate) access2000で作成されたプログラムをaccess2003で今まで問題なく利用していたのですが、パソコンを変えてWindows7で利用するようになってから どのコマンドボタンをクリックしても 「イベント プロパティに指定した式 クリック時でエラーが発生しました:名前が適切ではありません:コマン_Click」というエラーで動かなくなってしまいました。 ビューモードでコマンド割り当てのソースをみてみると access2007(エラーが出ない方)抜粋では Private Sub コマンド5_Click() On Error GoTo Err_コマンド5_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "F_選手練習(メイン)" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_コマンド5_Click: Exit Sub Err_コマンド5_Click: MsgBox Err.Description Resume Exit_コマンド5_Click End Sub access2003 (エラーの起きる)抜粋では Private Sub コマン_Click() On Error GoTo Err_コマン_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "F_会員管理(参照用)" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_コマン_Click: Exit Sub Err_コマン_Click: MsgBox Err.Description Resume Exit_コマン_Click End Sub のようにソースのコマンドの割り当ての「 ド5 」が抜けてしまい、正しい方からコピーペースとしても内容が正しく書き換わりません。(全てのコマンドボタンの ド○ ) 対処法がさっぱりわからず困っております。 どなたか解決方法を知って見える方、アドバイスをいただけたらうれしいです。よろしくお願いいたします。
- ベストアンサー
- その他(プログラミング・開発)
お礼
ご回答ありがとうございます。 疑問点がありますので、よろしければ再びご回答頂ければと思います。 (1)()は何の為にあるのですか? (2)この場合、何のエラーの可能性がありますか? (5)「EXIT sub」はこの場合だと、「END sub」へ飛ぶ(?)と考えてよいのでしょうか?