• 締切済み

ボタン押してみてもダイジョブでしょうか…?

 実行中のマクロで、エラーが発生した場合に備えて、 (難易DBソフト Access2kです) On Error文をつかって対応記述をしてみたのですが、 その(On Err)記述のなかで・・・ 「 隊長っ!またまたエラ―がっ… 」 発生してしまったばあい、流れはいったい何処へいってしまうのでしょうか?  ・ 対応処方済みのかた、  ・「私の記憶が確かなら…」の経験談をお持ちのかた  ・「わっ・はっ・は-」と一笑に付されながらもちゃんとアドバイスくれるかた  ・ 知ってるかたを知ってるかた  ・ その他感想 など、お寄せいただければ幸いです。 ( 実験してみようとおもったのですが、なんか「やばーな予感」がするので、 ボタン押すのためらってます。  ということで、こんなときは「あ、あすこできいてみよー」とおもい、  ここに書きました。 ) ~~~~~~~~~~~~~~~~~~~~~~~~~~ ( 余談です )   以前、「エラ-発生マクロ文を、その実行中に得たい」 というヘンテコリンな  質問してみたのですが、あきらめ悪く懲りずにかんがえてたら、  (他にも悩ましい問題がいくつかあって、これに特化集中できないのが残念です)  仮に要求が満足したとして・・・   1). システムがエラ-を検知する   2). On Error へ制御が渡る 3). エラ-発生文を取得し、何らかの方法でオペレータさんにつたえる 4). 3)の処理途上でまたエラ-が発生し 1).へもどる    というような、俗にいう " 無限地獄 " にハマリそうな気が・・・ (考えればかんがえるほど、疑問(や興味)がわいてきてまったく困りモンです。)

  • nao_2
  • お礼率94% (54/57)

みんなの回答

回答No.1

エラーメッセージが表示され止まります。 幸い無限ループに陥ることは無いようです。

nao_2
質問者

お礼

 あ、ほんとだ。とまっちゃった・・・ 「いや~これで安心しました…」 …私の理想としては、操作のお手伝いをいただける方々に、 "安心しておてつだいできるようなツールを…"、 と願ってるところにあるのですが、 (この努力は結局私自身の負荷軽減にもつながりますし…) まだまだ "コンピュータ内.自動ツール" だけでは収束しないようですねぇ…。 カテゴリ違いの感はあるのですが、この辺なにか見解ありましたらまたください。  あ、お礼まだでしたね。(おくれてすいません…) Tirelo-Setshaba(私には発音できませんでした、次回はフリガナを…)さん どうもありがとうございました。

関連するQ&A

  • マクロで真っ暗     (エラートラップについてです見捨てないで~)

    <エラーが発生したマクロ文を特定したいのですが>  作成したマクロ(Excel2kです)実行中に、 思わぬ不運にみまわれて、やむなくエラー発生となり お先真っ暗・・・となったばあい、 On Error文を使って対応指針を表示させたいと思うのは, 変な病気なのでしょうか。 Err.Descriptionプロパテ-の内容は(確かに正しいあんたはえらいと思うのでありますが) 素人目には(不親切だな~)と感じることがあります。 ex.) 開いたbookで指定のsheetを探したけど無かった場合・・・  (期待値):"お探しのシートはこのbookにはありませんよお客さん他をあたってね" (実際 ):"インデックスは有効範囲にゃ~ありませんぜ他をあたりな"  エラーが発生する可能性のある文すべてを対象にエラー内容を全予測して、 前後の文脈やエラーに至ったオペレーション記録などから 操作の当事者レベルに応じて妥当な解決方法を導き出すメッセージを3秒以内で・・・ 一生かかってもムリっぽいのでこれはあきらめました。 (労苦の上に努力を重ねるパイロットさんが職失ってしまいますよね) <<-- 質問です -->>  ほのかわり、初動調査のあしがかりとして、マクロ記述内でエラーの発生した<文&場所>を 明確に表示する方法なんかありませんでしょうか?(msgboxでだしたい) Resumeって書くとエラー発生文に戻るみたいなので内部的に情報保持してる とおもうのですが開示のしかたがわかりません・・・ デバグ途上でOn Error記述なしだとvb editerが該当文を指摘してくれるんですが 作成ツールとしてはOnErrいれちゃいたいのです。 長々すいません、このコーナーには何度か投稿してるのですが、 いつも多数の親切な回答でソッコー解決してしまうので、また書いてしまいました。 よろしくおねがいします。

  • 二つのエラーを発生させたい

    ひとつのプロシージャー内で、 二つのエラートラップを仕掛ける事は出来ないのでしょうか? Sub エラーが発生した時にエラーが発生したら() Dim i As Long On Error GoTo Err1 i = "a" Exit Sub Err1: MsgBox "Err1のエラー: " & Err.Description On Error GoTo Err2 i = "b" Exit Sub Err2: MsgBox "Err2のエラー: " & Err.Description End Sub を行うと、 i = "b" で2回目のエラーが発生した時は、 実行時エラーになってしまいます。 i = "b" で2回目のエラーが発生した時に、 「Err2のエラー: 型が一致しません。」 と表示させるにはどうすればいいでしょう? Sub エラーが発生した時にエラーが発生したら() Dim i As Long On Error GoTo Err1 On Error GoTo Err2 i = "a" Exit Sub Err1: MsgBox "Err1のエラー: " & Err.Description i = "b" Exit Sub Err2: MsgBox "Err2のエラー: " & Err.Description End Sub にすると、 i = "a" のエラーで、 「Err2のエラー: 型が一致しません。」 へ移動してしまいます。

  • マクロ FINDについて

    いつも回答して頂き、とても感謝しています。 マクロを1回実行させた時はすんなりいくのですが、続けて同じマクロを実行させるとFINDの記述の箇所でNothingになり、エラーが発生してしまいます。 引数を『Set 〇〇 = Nothing』でリセットしても駄目でした。しかし、ブックを一度閉じた後、実行すると最初だけはエラーが発生しません。 記述を載せたいのですが、会社で作ったものなので、持ち帰る事もできません。 この説明だけで申し訳ないのですが、対応方法を教えて頂けないでしょうか?宜しくお願い致します。

  • クラスモジュールからのErr.Raiseがうまくゆきません。

    クラスモジュール内で On Error Resume Nextを書き、 エラー処理を行った後、Err.Raiseを実行して、呼び出し元にエラーを返していますが、 呼び出しもとの On Error Goto のとび先に飛びません。 呼び出し元で、Err.Numberを表示すると、値が取れますので、値は渡せているようです。 呼び出し元で何か実行時エラーを発生するとちゃんと On Error gotoのとび先に飛びますので、クラスモジュールで行った Err.Raiseが処理されないだけのようです。 どうすれば、呼び出しもとのとび先に飛ぶようになるでしょうか。お知恵をお貸しください。

  • Onってなんでしょうか?

    私は現在、VB6を使用してプログラム開発を行っています。 「On Error」ステートメントに関して質問させていただきます。 私の管理下のソースに、   (1)「On Error Goto [行ラベル]」   (2)「On Err Goto [行ラベル]」 の2種類のステップがあり、 (2)に関しての動作が不明で困っています。 (要は「On [Object] Goto [行ラベル]」と記述した場合に、  どのように解釈されるのか分らないのですが・・・  (1)、(2)共にコンパイルは通りますが(2)の場合はエラーハンドリングはできません。) <質問> (1)「On Err Goto [行ラベル]」 と記述した場合、  どのような条件でGotoが実行されるのでしょうか?  (Errはエラーオブジェクトです) (2)「On」は   ・「On Error Goto [行ラベル]」   ・「On Error Resume Next」   ・「On Error Goto 0」  以外に使用する方法があるのでしょうか?

  • ACCESS エラーメッセージ表示されない理由

    ACCESSのエラーメッセージ表示について教えてください。 ACCESS2000でマクロを作成しました。 あるデータを読み込み、テーブルへ反映させるマクロです。 マクロを直接実行すると、データが存在しないとき、当然、エラーメッセージが表示されます。 ところが、このマクロをフォームから実行させると、同じ状況でエラーメッセージが表示されません。 どこに問題があってメッセージが表示されないものなのでしょう。(正常系の処理は正しく行われます) フォームのボタンにマクロの実行を定義しただけなのですが。 VBAを開いてみても、下記のとおりクリックされたときエラーならメッセージを表示しなさいと定義されています。 Private Sub コマンド1_Click() On Error GoTo Err_コマンド1_Click   Dim stDocName As String   stDocName = "マクロ名"   DoCmd.RunMacro stDocName Exit_コマンド1_Click:   Exit Sub Err_コマンド1_Click:   MsgBox Err.Description   Resume Exit_コマンド1_Click End Sub

  • VBでのエラー処理(On Error)

    VBで以下のようなプログラムを書いています。 sub On Error goto Err 処理1 Err: 処理2 End sub 処理1でエラーが発生した場合、Err:の処理に入ってくるのですが、もしErr:の中の処理2でもエラーが発生した場合、どうすればよいのでしょうか? Err:の中でもエラー処理ができるのでしょうか、それともロジックで回避しなければならないのでしょうか? ご存知の方がいらっしゃいましたら宜しくお願いします。

  • マクロ実行時のエラー処理について

    VBAのエラー処理の方法について教えて下さい。 エクセル2007を使用しています。 VBAでシートの名前を以下のように変更しようとしています。 シート名1 ← "1" シート名2 ← "2" シート名3 ← "3" 記述内容は以下の通りです。 '〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓 On Error GoTo Err1  For i = 1 to 3   Sheet(i).Name = i  'Sheet(i)の名前を変数"i"に変更する。 Err1:   Sheet(i).Delete   '上記処理でエラーが発生した場合はそのシートを削除する。  Next i '〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓  以上の処理を実行しようとした場合、同じ名前の既存シートが存在していたり、シート名に含まれてはいけない文字列が含まれていたりした場合、エラーが発生しますが、On Errorステートメントを使用してエラーが発生した場合の処理を実行したいのですが、1回目のエラーについてはOn Errorが働くのですが、2回目になるとOn Errorが働きません。  2回目以降のエラーも1回目と同様に処理したいのですが、コードの記述の変更方法や又は他の処理方法を教えて下さい。 エラーの種類は以下の通りです。 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓 実行時エラー'1004': シートの名前をほかのシート、Visual Basicで参照されるオブジェクト ライブラリまたは ワークシートを同じ名前に変更することはできません。 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓 以上。 尚、On Error Resume Nextは処理を無視するだけなので使用したくありません。 以上、宜しくお願い致します。

  • excel2010でボタンが反応しなくなった?

    EXCEL2010でシート上に作成したボタンがある時期から反応しなくなりました。 原因がわかりません。 VBAエディタで開いて、実行(f5)すると実行できます。 どうしたら元に戻るか、どなたかわかる方、お願いします。  ・元に戻る…「Excelのシート上からボタンをクリックするだけで実行できるようになる」 1.処理自体は単純でシート上に作成したコマンドボタンをクリックすると   標準モジュールに記述したマクロを実行します。   Sheet1のコード (CommandButton1_Click)      Call [標準モジュールSubの名称]ItiranGet   ※1 VBAのコードを開いた状態で、上記のCall文、標準モジュールで      実行(F5)すると、実行できます。 2.マクロのセキュリティは、下記に設定しています。   すべてのマクロを有効にする よろしくお願いいたします。

  • Access コマンドボタンからの印刷

    Access2003を使用し、フォームにコマンドボタンを追加して、そのボタンからレポートの印刷を行なおうとしています。 印刷ダイアログボックスを表示し、直前で印刷のキャンセルもできるようにと下記のように記述しました。 Private Sub 印刷1_Click() On Error GoTo Err_印刷1_Click '[印刷]ダイアログボックスを表示した後、印刷 DoCmd.SelectObject acReport, "レポート1", True DoCmd.RunCommand acCmdPrint DoCmd.OpenReport "レポート1", acViewNormal '正常終了処理 Exit_印刷1_Click: Exit Sub 'エラー発生時 Err_印刷1_Click: Select Case Err.Number Case 2501 Exit Sub Case Else End Select End Sub しかし、これを実行し、印刷すると、なぜか2部印刷されます。 どうやら2回処理が実行されているようです。 また、試しに印刷ダイアログボックスで通常使用しないプリンタを選択してみたら、選択したプリンタから1部、通常使用のプリンタから1部出力されてしまいました。 初心者なもので原因がわからず困惑しております。 どなたか解決方法のご教授お願い致します。

専門家に質問してみよう