2017-04-23 4 views
1

구문을 검색하여 범위를 셀을 마지막 데이터 열까지 구문을 포함하는 셀의 오른쪽에 배치하고 조건부 서식을 사용하여 셀을 포맷합니다. 이 코드는 TXT 파일과 XLSX 파일,하지만 문구'런타임 오류 1004 :'_Global '개체의'범위 '메서드가 xls 파일에서만 실행되지만 txt 또는 xlsx 파일에서는 실행되지 않습니다.

Set rngHeaderAs 

모두 잘 작동 도착 런타임 오류 1004 : 내가 XLS 파일의 코드를 실행하면 개체 '_Global'의 방법 '범위'실패했습니다. Find 절의 구가 반드시 존재하며, xlsx 파일과 동일한 xls 파일을 저장하면 코드가 완벽하게 실행됩니다.

코드 :

Sub Color_labreport_horizontal() 

Cells.Replace What:="n,d.", Replacement:="n.d.", lookat:=xlPart, _ 
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
    ReplaceFormat:=False 

On Error Resume Next 
'As 

Set rngHeaderAs = Range("A1:ZZ200").Find("As*Arsen*", lookat:=xlPart) 'This string generates the error 
Set rngAs = Range(rngHeaderAs, rngHeaderAs.End(xlToRight)) 
AsAddress = rngHeaderAs.Address(False, False) 

Dim Ul1As As Double 
Ul1As = 8 
Dim Ul2As As Double 
Ul2As = 20 
Dim Ul3As As Double 
Ul3As = 50 
Dim Ul4As As Double 
Ul4As = 600 
Dim Ul5As As Double 
Ul5As = 1000 


With ActiveSheet 

    With rngAs 
     .FormatConditions.Add xlExpression, Formula1:="=AND(ISNUMBER(" & AsAddress & ");" & AsAddress & "<" & Ul1As & ")" 
     .FormatConditions(1).Interior.ColorIndex = 33 
     .FormatConditions(1).Borders.LineStyle = xlContinuous 
     .FormatConditions(1).Borders.Weight = xlThin 

    End With 
    With rngAs 
     .FormatConditions.Add xlExpression, Formula1:="=AND(ISNUMBER(" & AsAddress & ");" & AsAddress & ">=" & Ul1As & ";" & AsAddress & "<" & Ul2As & ")" 
     .FormatConditions(2).Interior.ColorIndex = 4 
     .FormatConditions(2).Borders.LineStyle = xlContinuous 
     .FormatConditions(2).Borders.Weight = xlThin 
    End With 
    With rngAs 
     .FormatConditions.Add xlExpression, Formula1:="=AND(ISNUMBER(" & AsAddress & ");" & AsAddress & ">=" & Ul2As & ";" & AsAddress & "<" & Ul3As & ")" 
     .FormatConditions(3).Interior.ColorIndex = 6 
     .FormatConditions(3).Borders.LineStyle = xlContinuous 
     .FormatConditions(3).Borders.Weight = xlThin 
    End With 
    With rngAs 
     .FormatConditions.Add xlExpression, Formula1:="=AND(ISNUMBER(" & AsAddress & ");" & AsAddress & ">=" & Ul3As & ";" & AsAddress & "<" & Ul4As & ")" 
     .FormatConditions(4).Interior.ColorIndex = 45 
     .FormatConditions(4).Borders.LineStyle = xlContinuous 
     .FormatConditions(4).Borders.Weight = xlThin 

    End With 
    With rngAs 
     .FormatConditions.Add xlExpression, Formula1:="=AND(ISNUMBER(" & AsAddress & ");" & AsAddress & ">=" & Ul4As & ";" & AsAddress & "<" & Ul5As & ")" 
     .FormatConditions(5).Borders.LineStyle = xlContinuous 
     .FormatConditions(5).Borders.Weight = xlThin 
     .FormatConditions(5).Interior.ColorIndex = 3 
    End With 
    With rngAs 
     .FormatConditions.Add xlExpression, Formula1:="=AND(ISNUMBER(" & AsAddress & ");" & AsAddress & ">=" & Ul5As & ")" 
     .FormatConditions(6).Interior.ColorIndex = 7 
     .FormatConditions(6).Borders.LineStyle = xlContinuous 
     .FormatConditions(6).Borders.Weight = xlThin 
    End With 
    With rngAs 
     .FormatConditions.Add xlExpression, Formula1:="=LEFT(" & AsAddress & ";1)=""<""" 
     .FormatConditions(7).Interior.ColorIndex = 33 
     .FormatConditions(7).Borders.LineStyle = xlContinuous 
     .FormatConditions(7).Borders.Weight = xlThin 
    End With 
    With rngAs 
     .FormatConditions.Add xlExpression, Formula1:="=(" & AsAddress & ") = ""n.d.""" 
     .FormatConditions(8).Interior.ColorIndex = 33 
     .FormatConditions(8).Borders.LineStyle = xlContinuous 
     .FormatConditions(8).Borders.Weight = xlThin 
    End With 
End With 

내가 XLS 파일에서 실행할 때 만 발생하는 이유는 어떤 생각?

+1

.xls 파일은 Excel 97-입니까? 호환 가능합니까? 그렇다면 범위 참조가 워크 시트 외부에 있습니다 (열만 'VI'로 이동하고 'ZZ'열을 참조하십시오.) –

+0

감사합니다. Ron. 솔루션이되기를 바랬으므로 ZZ200을 "VI200"으로 변경했지만 여전히 오류가 발생했습니다. "BZ20"넣을 때, 그것은 작동했다. 분명히, 그냥 가장 높은 허용 행/열을 찾을. 또는 더 나은 아직 : (A1 "). CurrentRegion – LarsS

답변

1

론 로젠 펠트 (Ron Rosenfelt)가 내게 의견에 대답을주었습니다. ZZ200이 허용 범위를 벗어난, 그래서 대신 A1으로 범위를 정의하는 :

Set rngHeaderAs = Range("A1").CurrentRegion.Find("As*Arsen*", lookat:=xlPart) 

내가 허용 범위를 초과하지 않고 내가 원하는 범위를 커버 있는지 확인하기 : ZZ200 (또는 다른 하드 범위), 나는 CurrentRegion 사용 . 이제 코드는 Excel 97 호환 파일에서도 완벽하게 실행됩니다.