2017-04-23 20 views
1

このフレーズを検索して範囲を最後のデータ列までフレーズを含むセルの右側にセルを配置し、セルを条件付き書式設定します。このコードは、TXTファイルとのxlsxファイルが、フレーズ'実行時エラー1004:' _Global 'オブジェクトの' Range 'メソッドがxlsファイルのみで、txtまたはxlsxファイルでは失敗しました

Set rngHeaderAs 

の両方で正常に動作します取得します実行時エラー1004:私はXLSファイルにコードを実行すると、オブジェクトの_Global "のメソッド「range」に失敗しました。 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と範囲を定義するのだった:ZZ200(または他のいくつかのハードコードされた範囲)、私はCurrentRegionを使用:

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

Iが許容範囲を超えることなく、私がしたい範囲をカバーしていることを確認します。今度はExcel 97互換のファイルでも完全に動作します。

関連する問題