• ベストアンサー

エラー処理について

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 38 Then PICOCX1.Outp PortB, 7, High PICOCX1.Outp PortB, 4, High End If If KeyCode = 40 Then PICOCX1.Outp PortB, 6, High PICOCX1.Outp PortB, 5, High End If If KeyCode = 37 Then PICOCX1.Outp PortB, 7, High PICOCX1.Outp PortB, 5, High End If If KeyCode = 39 Then PICOCX1.Outp PortB, 6, High PICOCX1.Outp PortB, 4, High End If End Sub Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer) If KeyCode = 38 Then PICOCX1.Outp PortB, 7, Low PICOCX1.Outp PortB, 4, Low End If If KeyCode = 40 Then PICOCX1.Outp PortB, 6, Low PICOCX1.Outp PortB, 5, Low End If If KeyCode = 37 Then PICOCX1.Outp PortB, 7, Low PICOCX1.Outp PortB, 5, Low End If If KeyCode = 39 Then PICOCX1.Outp PortB, 6, Low PICOCX1.Outp PortB, 4, Low End If End Sub というプログラムですがこれがもしPICOCX1.Outp PortB, 4, Lowなどが実行できないとエラーとして返ってきてしまいます。このときエラー箇所をもう一度実行する方法はあるのでしょうか? お願いします。こちらの環境はVB6.0です。

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

  • ベストアンサー
  • takkunnet
  • ベストアンサー率74% (32/43)
回答No.2

サブプロシージャを使用してこういうのはどうでしょうか? 【用意するサブプロシージャ】 Private Sub ExecOutp( PICOCX1 , param1 , param2 , param3 ) On Error Resume Next '実行 PICOCX1.Outp param1 , param2 , param3 'エラーが発生していたら再起呼び出し If Err.Number <> 0 Then Call ExecOutp( PICOCX1 , param1 , param2 , param3 ) End Sub 呼び出し側は Call ExecOutp( PICOCX1 , PortB , 6 , Low ) こんな感じで呼び出します。

その他の回答 (1)

  • re13b
  • ベストアンサー率58% (18/31)
回答No.1

単純に「on error goto」でエラー処理に飛ばして「resume」で戻って・・・ということではダメですか? 蛇足かもしれませんが・・・ このocxってマイコン制御用の奴ですよね? 一旦出力に失敗したものを再度出力しても、結局再びエラーになってしまいませんか? ターゲットがPICマイコンならば、ポートの出力状態を読み込むことが出来るので、出力した内容とそれを読み込んだ内容を比較して、偽であった場合にリトライする、というような処理が必要だと思います。