- 締切済み
vbaのエラーを修正するコード(初心者です)??
シートの c1セルに =a1+5 という式があります。 a10からa14にそれぞれ1,2,3,4,5と数字が入っています。 Sub 計算() If Cells(1, 3).Value < 10 Then Cells(1, 4).Value = 100 Else Cells(3, 1).Value End If End Sub Sub エラー() Dim i As Integer For i = 1 To 5 Cells(1, 1).Value = Cells(10 + i, 1).Value Application.Run "計算" Next i End Sub 以上のコードを書きます。 「Sub 計算」の4行目が不完全なのはあえてそうしています。 で、実行すると、当然ながらエラーが出ます。 そこで、実行時エラーを終了してa14に4.9と数字を手入力し、 再度「Sub エラー」を実行すると無事に終了です。 このエラー後の「終了→入力→実行」を「Sub エラー」の中に 書きたいんですが… 数式に関しては、例示なので触れないでください。 あくまで手順を教えていただきたいのです。 何卒ご教授ください。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
補足2 もともと、A14に、4.9 を入れるというのは、Excel 4.0 関数マクロの対話型のつもりだったのではありませんか?それは、InputBox などに置き換えればよいと思います。
- Wendy02
- ベストアンサー率57% (3570/6232)
補足: 初歩の初歩ですが、コンパイルエラーは、Error トラップの範疇にはありませんから、On Error Goto などは、利用できません。Err.Raise ?? とも考えるかもしれませんが、わざわざ、エラー値を発生させるだけに見合う内容がありません。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 質問内容は、VBAロジックとして成り立っていませんが……。 >「Sub 計算」の4行目が不完全なのはあえてそうしています。 ×Cells(3, 1).Value この代わりに、 MsgBox "セルを修正します。", vbInformation とでも入れたらどうでしょう。 VBAは、スクリプト言語ではありません。VBAのプロシージャとして成り立つように作り直さなくてはなりません。 Application.Run "計算" 呼び出しは、Call 計算 と書きます。 >数式に関しては、例示なので触れないでください。 触れないでくださいといわれても、プロシージャとして成り立っていないものに関して、どうこういう必要もないと思います。エラーは、「コンパイルエラー」と出ているはずです。 コンパイルできないようなものを、コードに使おうとするのは無理です。それに、今のコードでは、たとえ直しても無限ループが発生する可能性があります。 どのようにしたいのか、言葉で説明していただいたほうがよいと思います。基本的なところがクリアしていないようです。
- akina_line
- ベストアンサー率34% (1124/3287)
こんにちは。 VBAのエラーハンドリングはとても貧弱です。下記サイトをご参照ください。 http://officetanaka.net/excel/vba/statement/OnError.htm 詳しくはVBAのヘルプなどを参照してください。 では。
- MoguraSE
- ベストアンサー率64% (81/126)
こんにちは。 On Error Goto文ではダメですか? Sub エラー() Dim i As Integer For i = 1 To 5 Cells(1, 1).Value = Cells(10 + i, 1).Value On Error Goto err_hand Application.Run "計算" Next i err_hand: Range("A14").Value = 4.9 Call エラー End Sub 動作チェックはしていません。 ご参考になれば幸いです。
お礼
早々とありがとうございます。 On Error Goto がわからなかったので、とりあえず 丸ごと貼り付けてステップインで見てみました。 やはりa14、5の入力で実行時エラーになってとまっちゃいます。 もうちょっと勉強してみます。
お礼
ありがとうございます。 もうちょっと勉強してみます。