2014-04-29 3 views
1

내가 꽤 자주 나는 항상 사용 THS 방법 범위의 각 셀을 통해 루프 필요 범위의 각 셀에 대해 :VBA - 내 엑셀 VBA 프로젝트에서

Dim xyzRange As Range 
Dim rCell As Range 
Set xyzRange = Range("C1").SpecialCells(xlTextValues) 
For Each rCell in xyzRange 
    'Do Stuff 
Next rCell 

이 방법을 여러 번 일을하지만,이 시간 그렇지 않습니다.
일반적으로 범위 내에있는 셀의 양의 두 배 정도됩니다. 누구든지이 코드에서 무엇을 변경해야합니까?


Sub checkEndFileForTrunks(ByVal endFileName, ByVal trunkValue) 
    Dim portRange As Range 
    Dim portValue As String 
    Dim portNumber As Integer 

    Workbooks.Open(PATH_OUTPUTFINAL & "\" & endFileName & ".xlsx").Activate 
    Set portRange = Range("C1").SpecialCells(xlTextValues) 
    portRange.Select 
    portNumber = 0 

    Dim rCell As Range 
    For Each rCell In portRange 
     portNumber = portNumber + 1 
     'MsgBox (Range("C" & portNumber).Value) I used these two lines for debugging 
     'Range("C" & portNumber).Select 
    Next rCell 
    Application.DisplayAlerts = False 
    ActiveWorkbook.Close SaveChanges:=True 
    Application.DisplayAlerts = True 
End Sub 
가 나는 이유를 찾을 :

여기에 전체 기능의
라인을

Set portRange = Range("C1").SpecialCells(xlTextValues) 

그것 때문에 루프의 모든 세포를 통해 열을 선택하지 않은 시트 대신에

Set portRange = Range("C1").EntireColumn.SpecialCells(xlTextValues) 

고쳐졌습니다.

+0

'이번에는 그렇지 않습니다. 정확히 작동하지 않는 방법은 무엇입니까? 어떤 오류 메시지가 보입니까? –

+0

오류가 발생하지 않으며 너무 자주 반복됩니다. –

+0

자세한 정보를 제공해야합니다. 작은 샘플 데이터 세트는 원하는 결과와 실제로 얻은 결과를 모두 보여줍니다. –

답변

1

나는 1 셀 범위가 xlTextValues가 아니라고 말할 것입니다. 디버거에서 코드를 단계별로 실행하고 정확히 무슨 일이 일어나는지 볼 수 있습니다.

+0

이미 디버그를 시도했지만 범위가 정확합니다. –

+0

모든 것에 감시 점을 설정하십시오. 특히 무언가가 대상인지 확인하십시오. 실패한 집합은 오류 설정에 따라 문제를 일으키지 않으며 시도 할 때까지 사용하지 않음을 기억하십시오. 범위가 얼마나 큰지보십시오. 이제 여기에 c1에 텍스트가 포함되어 있으면 코드가 작동합니다. 그렇지 않으면 오류 검사가 꺼져 있으면 오류가 발생하고 오류 검사를 수행하면 아무것도 수행하지 않습니다. –