Excel VBA質問箱 IV

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

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


2801 / 13644 ツリー ←次へ | 前へ→

【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 お礼[未読]

【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

【65906】Re:エラーが出ても跳ばして次のプロシー...
発言  Jaka  - 10/7/6(火) 14:35 -

引用なし
パスワード
   ▼ぽんち さん:
>例えば、身長の所の回答が数字なら問題ないのですが、アンケートの回答をOCRで読むために誤認識により「?」マークなどが入ることがあるのです。
>そうすると、
>BMI = 体重 / (身長 * 0.01) ^ 2
>の所で止まってしまいます。
>
>こういったエラーが発生しても、そのエラーを無視して次のプロシージャを動かすという方法はありませんか?

原因があらかじめわかっているの回避策のあるエラーに、エラートラップを使うのは関心しませんね。
先に
「?」マークなどが入ることがあるのです。
をチェックすれば、エラーになりませんよね。

【65907】Re:エラーが出ても跳ばして次のプロシー...
発言  ぽんち  - 10/7/6(火) 15:12 -

引用なし
パスワード
   >
>原因があらかじめわかっているの回避策のあるエラーに、エラートラップを使うのは関心しませんね。
>先に
>「?」マークなどが入ることがあるのです。
>をチェックすれば、エラーになりませんよね。

▼Jaka さん:
回答ありがとうございます。
エラーチェックを私自身がする場合、
エラートラップなど使う必要は全くないのですが、
(自分でチェックして回避できますから)
別の人にマクロを使ってもらうために事前のチェックができないのです。
そもそも、誤回答を見つけ出すために作ったマクロですので・・・。

まったくのExcel VBAの素人さんに使ってもらう為、
とにかくエラーをごまかして最後までプロシージャを動かしたいのです。

最悪、エラーが起こる(と想定される)プロシージャを最後の方に書くという手を考えていますが、エラーが起こりうるプロシージャが30個中5個ほどあります。

【65908】Re:エラーが出ても跳ばして次のプロシー...
回答  Jaka  - 10/7/6(火) 15:58 -

引用なし
パスワード
   ▼ぽんち さん:
>エラーチェックを私自身がする場合、
>エラートラップなど使う必要は全くないのですが、
>(自分でチェックして回避できますから)
>別の人にマクロを使ってもらうために事前のチェックができないのです。

え、どのような意味なのか解りません?
自分でチェックとは?
事前のチェックができないとは?

>「?」マークなどが入ることがあるのです。
こう書いてありましたけど。

【65909】Re:エラーが出ても跳ばして次のプロシー...
発言  Jaka  - 10/7/6(火) 16:49 -

引用なし
パスワード
   on error resume next

【65915】Re:エラーが出ても跳ばして次のプロシー...
お礼  ぽんち  - 10/7/6(火) 20:58 -

引用なし
パスワード
   ▼Jaka さん:

すみません、せっかく作ったプロシージャが思ったとおり動かなくて
いっぱいいっぱいだったので
説明不足があり申し訳ありませんでした。

On Error Resume Next
これで解決しました。

またわからないことがありましたら、ご助言お願いいたします。
ありがとうございました!

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