- 締切済み
超初心者です コマンドボタンのプロシージャの解説をお願いします
超初心者です。どうかご教授願います。 フォームで、コントロールウィザードを使い、コマンドボタンを使うと、 プロシージャには、下記の記述となりますよね。 それぞれの項目の意味をご解説いただければと思います。 --------------------------------------------------- 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」とは何が違うのですか?
- みんなの回答 (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/17069)
(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(アクセス)の本を読んでください。基礎的なだけに、説明が難しい。 イベントプロシジュアーの考えも解説を読んでください。 すなわち独学の難しさですね。
お礼
ご回答ありがとうございます。 疑問点がありますので、よろしければ再びご回答頂ければと思います。 (1)()は何の為にあるのですか? (2)この場合、何のエラーの可能性がありますか? (5)「EXIT sub」はこの場合だと、「END sub」へ飛ぶ(?)と考えてよいのでしょうか?