죄송합니다. 오류의 원인은 "답변"으로 받아 들여지지 않았습니다. '당신이 코드의 2 선 사이 -
을 가지고하지 않는 한 (
For Each curr In Workbooks("ExtractedColumns").Sheets("practice").Range("G:G")
, 또는 당신은 didn를 :
첫째, 때 당신에게 루프 : For Each curr In Workbooks("ExtractedColumns").Sheets("practice").Range("G:G")
구문이 가정은 한 라인에 있어야합니다 갖고 계신 코드를 공유하십시오.)
그러나, 당신은 이미 이전 행에 ws
에 Workbooks("ExtractedColumns").Sheets("practice")
할당, 왜 For Each curr In ws.Range("G:G")
를 사용하지 마십시오.
가
은 또한,에, 열 G 만 점유 세포를 통해, 영원히 루프를 취할 것입니다 귀하의 전체 열 G 통해 반복 : 당신이 라인 curr.Value = " - "
을 발견하면,
For Each curr In ws.Range("G1:G" & ws.Cells(ws.Rows.Count, "G").End(xlUp).Row)
2ns의 이유, 당신이 원하는 전체 행을 삭제하려면 curr.EntireRow.Delete
을 사용해야합니다.
마지막으로 @Comintern에서 언급 한 것처럼 오류가있는 셀을 트랩해야하고 curr.Value
에 다른 변수를 할당 할 필요가 없습니다. If IsError(curr.Value) Then
만 사용하십시오.
코드 내가 나머지를 볼 수없이 유형 불일치 오류가 ... 확실히 알고 열심히 문자열로 비교되는, 숫자 값을 포함 CURR에 의해 발생되는 의심
Sub deleteRows()
Dim curr As Range
Dim ws As Worksheet
Set ws = Workbooks("ExtractedColumns").Sheets("practice")
' loop through only occupied cells in Column G
For Each curr In ws.Range("G1:G" & ws.Cells(ws.Rows.Count, "G").End(xlUp).Row)
On Error Resume Next
If IsError(curr.Value) Then ' check if cell.value return an error
If Err.Number <> 0 Then
Err.Clear
On Error GoTo 0
End If
Else ' current cell.value doesn't return an error
If curr.Value = " - " Then
curr.EntireRow.Delete '<-- delete entire row
End If
End If
Next curr
End Sub
@pokemon_Man – ARich
당신이 그것을 당신에게 유형 불일치 오류를 줄 때 curr' '의 값을 인쇄 봤어 아니, 기술적으로는 ... 다음 줄에인가? – ARich
IsError를 테스트해야합니다. – Comintern