このプログラムはあります。リモートシステムから値をスキャンします。時には、ネットワークがダウンしていて、#nanエラーかそれに類するものが入るとタイムアウトすることがあります。セルから内容を削除する、IFIsNumeric = False
私はそのエラーメッセージをデータベースに書き込もうとします。それは数値を探しているので「データ型の不一致」のためにエラーになります。
これを回避するために、私は結果を整理しようと決めました。だから私は以下のコードを持っています。それはほとんどの時間で動作します。途中で数字の数字があり、それが再び間違っている場合、私はそれが失敗するのを見ている。数字の数字になると、ループを止めて他のものをクリーンアップしないようです。
誰かが私に与えることができる援助は素晴らしいでしょう。おそらく私はこれを悪い方法でやっています。私は、以下に見ようとしていることの例を挙げようとしました。ご意見やご質問がありましたらお知らせください。
Private Sub Clean()
'Select Current Row For where to start cleaning. LoopIndex is a global variable.
'Just giving the line of where to read from so I do not need to read the whole sheet.
Range("B" & LoopIndex).Select
'Start the loop, to go through the entire row.
Do Until IsEmpty(ActiveCell)
'Checks if it is a number value; if it is not it will clear out the data.
If IsNumeric(ActiveCell.Value) = False Then
ActiveCell.Value = ""
End If
ActiveCell.Offset(0, 1).Select
Loop
End Sub
|A |B |C |D |
|#error|#Error|3 |#Error|
私はそれを見たいと思っています。
|A |B |C |D |
| | |3 | |
何をしているのですか?
|A |B |C |D |
| | |3 |#Error|
「LoopIndex」はどこですか?また、[.Select'/'.Activate'](https://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros)の使用を避けるのが最善です。 – BruceWayne
これは私が割り当てたグローバル変数です。コメント欄にそれがありました。 – user2644176
@ user2644176私はdoループを使うのに注意します。 IMOでは、洗浄したい範囲を指定し、細胞を洗浄して洗浄するだけの方が安全です。あなたの範囲は可変ですか?私の答えがあなたにとってうまくいかない理由はありますか?私に知らせて、それを働かせるのを手伝ってくれるでしょう。あなたがなぜそうでないのかについては、 'IsEmpty'以外のものを試してみましょう - 代わりに' ActiveCell = "" 'を使いたいかもしれません。また、私のマシンではうまく動作するように見えました(しかし、たった1行です)。 – user1274820