Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


16297 / 76732 ←次へ | 前へ→

【65904】エラーが出ても跳ばして次のプロシージャを実行したい
質問  ぽんち  - 10/7/6(火) 14:01 -

引用なし
パスワード
   WindowsXP, Excel2007を使っています。
Excelを長年使っており中級レベルぐらいですが、
ExcelVBA歴4ヶ月、独学で詰め込み学習中です。
常識的なことが分かっていないかもしれませんが、お手柔らかにお願いします。


アンケートの集計にExcelVBAを使おうとしています。
いくつかの細切れのプロシージャを作って、まとめて動かす作戦を考えました。
下のこんな感じです。

Sub 集計 ()
Application.Run "test.xlsm!BMI.BMI"
Application.Run "test.xlsm!check1.check1"
Application.Run "test.xlsm!check2.check2"
Application.Run "test.xlsm!check3.check3"
End Sub 

ところが、一番上のプロシージャBMI(下にコードを書きました)がエラーで止まってしまうことがあります。
例えば、身長の所の回答が数字なら問題ないのですが、アンケートの回答をOCRで読むために誤認識により「?」マークなどが入ることがあるのです。
そうすると、
BMI = 体重 / (身長 * 0.01) ^ 2
の所で止まってしまいます。

こういったエラーが発生しても、そのエラーを無視して次のプロシージャを動かすという方法はありませんか?
PCが苦手な人に操作してもらう必要があるため、マクロが途中で止まってしまうという事態を極力避けたいのです。
とても困っています。良いアイディアをよろしくお願いいたします!

Sub BMI()
  Dim BMI As Double
  Dim 身長 As Variant
  Dim 体重 As Variant
  Dim sheetobj As Worksheet
  Dim 判定 As String
  
  Set sheetobj = ActiveWorkbook.Worksheets("エラー確認")
  
  With sheetobj
    身長 = Range("H4")
    体重 = Range("I4")
    BMI = 体重 / (身長 * 0.01) ^ 2
    Range("G4") = BMI
    判定 = "OK"
    Range("G5").Interior.ColorIndex = 20
    Range("G5") = 判定
      
  End With
End Sub
2 hits

【65904】エラーが出ても跳ばして次のプロシージャを実行したい ぽんち 10/7/6(火) 14:01 質問
【65906】Re:エラーが出ても跳ばして次のプロシージ... Jaka 10/7/6(火) 14:35 発言
【65907】Re:エラーが出ても跳ばして次のプロシージ... ぽんち 10/7/6(火) 15:12 発言
【65908】Re:エラーが出ても跳ばして次のプロシージ... Jaka 10/7/6(火) 15:58 回答
【65909】Re:エラーが出ても跳ばして次のプロシージ... Jaka 10/7/6(火) 16:49 発言
【65915】Re:エラーが出ても跳ばして次のプロシージ... ぽんち 10/7/6(火) 20:58 お礼

16297 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free