2011-08-25 5 views
0

범위에서 빈 셀을 기반으로 내 코드는 다음과 같습니다삭제 행이 나는 범위에서 빈 행을 삭제하려고

는 :

Dim rng As Range 
Dim i As Long, counter As Long 

i = 1 

Range("B1").Select 
Selection.End(xlDown).Offset(0, 5).Select 

Set rng = Range("G2", ActiveCell) 

Range("G2").Select 

For counter = 1 To rng.Rows.Count 

    If rng.Cells(i) = "" Then 
     rng.Cells(i).EntireRow.Delete 
    Else 
     i = i + 1 
    End If 

Next 

그래서, hmqcnoesy는 친절 오류 메시지를 해결 도움이되었습니다 .

Dim r1 As Range 'Using Tim's range.  
Set r1 = ActiveSheet.Range(Range("G2"),Range("B1").End(xlDown).Offset(0, 5)) 
    'Delete blank cell rows. 
r1.SpecialCells(xlCellTypeBlanks).EntireRow.Delete 
Set r1 = Nothing 

답변

4
: 변수는 정수 데이터 또한

의 내 모든 행에 대해 같은 큰 수를 보유 할 수 없기 때문에 같은 LONG하지 INTEGER를 흐리게한다, Jon49 나에게이 프로세스에 대해 많은 mroe 효율적이었다 일부 코드를했다

icounterLong 유형을 사용해보세요. Integer을 사용하면 워크 시트에 1 백만 개가 넘는 행이있는 Excel의 최신 버전에서는 오버플로가 발생합니다.

+0

. 너무 길어야합니까? – Chaostryder

+0

예, 카운터도 Long이어야합니다. 고마워. 고마워. – hmqcnoesy

+0

어이 그래서 나는 길게 시도하고 부호는 통과하고 행 (감사 =)를 삭제한다 지금 문제는이다. 그것은 단지 멈추지 않는다. 열 삭제를 계속합니다. u 제안이 있으십니까? – Chaostryder

2
Dim rng As Range 
Dim counter As Long 

Set rng = Range(Range("G2"),Range("B1").End(xlDown).Offset(0, 5)) 
For counter = rng.Rows.Count to 1 Step -1 
    If Len(rng.Cells(counter).Value) = 0 Then rng.Cells(counter).EntireRow.Delete 
Next 
+0

감사합니다. Tim, 아마도 worker 일 것입니다 만, Jons 코드는 루프를 필요로하지 않고 훨씬 빠르게 작업했기 때문에 사용했습니다. 어쨌든 고마워요! – Chaostryder

3

여기 당신을 위해 몇 가지 간단한 코드입니다 : 내가 바로 것을 시도 할 것이다

Dim r1 As Range 

'Using Tim's range.  
Set r1 = ActiveSheet.Range(Range("G2"),Range("B1").End(xlDown).Offset(0, 5)) 

'Delete blank cell rows. 
r1.SpecialCells(xlCellTypeBlanks).EntireRow.Delete 

Set r1 = Nothing 
+0

안녕하세요, 덕분에 대신 실제로 내 코드를 변경 jsut 너무 빨리 사촌 루프를 많이 걸립니다. 덕분에 – Chaostryder

+0

당신을 위해 잘되어 기쁘다. 코드는 여전히 루프를 수행합니다. Excel에서 내부적으로 수행하므로 VBA보다 훨씬 빠른 코드입니다. – Jon49

+0

나는 Jon에게이 대답을 수락 할 것이다 (나는 그것을 바꿀 수있다). :) +1 – aevanko

관련 문제