2016-03-23 12 views
1

ROWカウントが1を超える場合、自動塗りつぶしを適用する最もきれいな方法は何ですか? 私は以下の行を使用しています。ただし、列「I」に1行しかカウントされていないインスタンスがある場合は、エラーが発生します。1行以上の自動塗りつぶしを適用しない他の場合は適用しない

Sheets(1).Range("J2").AutoFill Destination:=Range("J2:J" & Cells(Rows.Count, "I").End(xlUp).Row) 
+0

あなたはJ2:J1の範囲をオートフィルしていますか? – Jeeped

答えて

0

あなたは明示的にすべてのRange objectRange.Cells propertiesためRange.Parentワークシートのプロパティを参照する必要があります。 ActiveSheet propertyへの暗黙の参照に依存することはできません。

with Sheets(1) 
    .Range("J2").AutoFill Destination:=.Range("J2:J" & .Cells(Rows.Count, "I").End(xlUp).Row) 
end with 

Range.FillDown methodのコードは簡単です。

with Sheets(1) 
    .Range("J2:J" & .Cells(Rows.Count, "I").End(xlUp).Row).FillDown 
end with 

With ... End With statementはプレフィックス期間(別名終止符または.)を持っているすべての.Range.Cellsに親ワークシートの参照を渡します。

0

私はオートフィル機能を実行するためにコピー&ペースト方法を使用しています。 あなたの要求に応じて、値や数式として特別なペーストを使用することができます。これは自動塗りつぶしの別の方法です

Sub test11() 
Dim L As Long 

L = Sheets(1).Range("J1:J" & Sheets(1).Cells(Sheets(1).Rows.Count, "J").End(xlUp).Row).Count 

    With Sheets("Sheet1") 

     .Range("J1").Copy 

     ' Change Range as per your requirement and paste function as per your requirement 

     .Range("J2:J" & L).PasteSpecial xlValues 

    End With 


End Sub 
+0

'Range(" J1:J "&L)'は '.'を必要とするかもしれません。 – Jeeped

+0

列 "I"で2以上の行数を処理しています。ただし、列I(ヘッダーを含まない)に1つのエントリしかない場合、このエラーは表示されます。 "Rangeクラスのオートフィルメソッドが失敗しました"。 –

関連する問題