그래서이 프로그램이 있습니다. 원격 시스템에서 값을 검색합니다. 때로는 네트워크가 다운되어 #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 until 루프를 사용할 때주의해야합니다. IMO 청소하려는 범위를 지정하고 세포를 청소하여 루프를 청소하는 것이 훨씬 안전합니다. 범위 변수가 맞습니까? 내 대답이 당신에게 효과가 없을 이유가 있습니까? 나에게 알려 줘서 내가 일하도록 도와 줄거야. 왜 당신이 아닌지, 나는'IsEmpty' 이외의 것을 시도 할 것이다. 대신'ActiveCell = ""'을 사용하고 싶을 것이다. 또한 내 컴퓨터에서 제대로 작동하는 것처럼 보였습니다 (단 한 줄만). – user1274820