• 締切済み

超初心者です コマンドボタンのプロシージャの解説をお願いします

超初心者です。どうかご教授願います。 フォームで、コントロールウィザードを使い、コマンドボタンを使うと、 プロシージャには、下記の記述となりますよね。 それぞれの項目の意味をご解説いただければと思います。 --------------------------------------------------- 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」とは何が違うのですか?

みんなの回答

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.3

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)
回答No.2

基本的にコードは上から一行ずつ処理されて進んでいきます。 東京駅から大阪まで鈍行列車に乗った時をイメージして下さい。 その時に乗るのを止めたい 横浜から一気に静岡まで行きたい 土砂崩れで運行停止や路線の迂回とかってありますよね? それと一緒です 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)   本来の終着駅、 かなり乱暴な説明ですので分かってもらえないかも

PearlJam69
質問者

お礼

ご回答ありがとうございます。 疑問点がありますので、よろしければ再びご回答頂ければと思います。 (1)()は何の為にあるのですか? (2)この場合、何のエラーの可能性がありますか? (5)「EXIT sub」はこの場合だと、「END sub」へ飛ぶ(?)と考えてよいのでしょうか?

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

(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