2012-02-22 24 views
1

私はこれをあまりよくしていないので、これらのルールは手動で追加していました。VBA Excel macoを自動化

これを自動化する方法はありますか?ありがとう。

Range("D22:G22").Select 

    Selection.AutoFill Destination:=Range("D22:G23"), Type:=xlFillDefault 

    Range("D22:G23").Select 

    Range("I22").Select 

    Selection.AutoFill Destination:=Range("I22:I23"), Type:=xlFillDefault 

    Range("I22:I23").Select 

    Range("M22:N22").Select 

    Selection.AutoFill Destination:=Range("M22:N23"), Type:=xlFillDefault 

    Range("M22:N23").Select 

    Sheets("BN1").Select 

    Range("C20:G20").Select 

    Selection.AutoFill Destination:=Range("C20:G21"), Type:=xlFillDefault 

    Range("C20:G21").Select 

    Range("K20:L20").Select 

    Selection.AutoFill Destination:=Range("K20:L21"), Type:=xlFillDefault 

    Range("K20:L21").Select 

    Sheets("BUM1").Select 

    Range("C20:G20").Select 

    Selection.AutoFill Destination:=Range("C20:G21"), Type:=xlFillDefault 

    Range("C20:G21").Select 

    Range("K20:L20").Select 

    Selection.AutoFill Destination:=Range("K20:L21"), Type:=xlFillDefault 

    Range("K20:L21").Select 

    Sheets("Express").Select 

    Range("C20:G20").Select 

    Selection.AutoFill Destination:=Range("C20:G21"), Type:=xlFillDefault 

    Range("C20:G21").Select 

    Range("K20:L20").Select 

    Selection.AutoFill Destination:=Range("K20:L21"), Type:=xlFillDefault 

    Range("K20:L21").Select 

    Sheets("DL1").Select 

    Range("C20:G20").Select 

    Selection.AutoFill Destination:=Range("C20:G21"), Type:=xlFillDefault 
+0

何をしましたか?あなたの入力は何ですか?期待されるアウトプット? – JMax

答えて

4

私はあなたが上記のコードをマクロレコーダーで記録したと推測しています。マクロレコーダーは、わかりにくいコマンドの構文を発見するのに最適ですが、出力を整えるのが難しい場合があります。

最後のいくつかのステートメントを検討してください。

Sheets("Express").Select 
Range("C20:G20").Select 
Selection.AutoFill Destination:=Range("C20:G21"), Type:=xlFillDefault 
Range("C20:G21").Select 
Range("K20:L20").Select 
Selection.AutoFill Destination:=Range("K20:L21"), Type:=xlFillDefault 
Range("K20:L21").Select 
Sheets("DL1").Select 
Range("C20:G20").Select 
Selection.AutoFill Destination:=Range("C20:G21"), Type:=xlFillDefault 

私はこれらのステートメントを置き換えることができます。私はあなたが同意すると思います

With Sheets("Express") 
    .Range("C20:G20").AutoFill Destination:=.Range("C20:G21"), Type:=xlFillDefault 
    .Range("K20:L20").AutoFill Destination:=.Range("K20:L21"), Type:=xlFillDefault 
End With 
With Sheets("DL1") 
    .Range("C20:G20").AutoFill Destination:=.Range("C20:G21"), Type:=xlFillDefault 
End With 

整然と見えますが、少し説明が必要。

考えてみましょう:

With Sheets("Express") 
    .Range("C20:G20").AutoFill Destination:=.Range("C20:G21"), Type:=xlFillDefault 
    .Range("K20:L20").AutoFill Destination:=.Range("K20:L21"), Type:=xlFillDefault 
End With 

Withは私が欲しいと言うシート(「エクスプレス」)End Withまで、ドットで始まるものの前に追加しました。

Sheets("Express").Range("C20:G20").AutoFill Destination:=Sheets("Express").Range("C20:G21"), Type:=xlFillDefault 
    Sheets("Express").Range("K20:L20").AutoFill Destination:=Sheets("Express").Range("K20:L21"), Type:=xlFillDefault 

は考えてみましょう::

Sheets("Express").Select 
Range("C20:G20").Select 
Selection.AutoFill Destination:=Range("C20:G21"), Type:=xlFillDefault 
Range("C20:G21").Select 

あなたはそれを実行した場合と同様に、マクロレコーダーは各ステップを記録した

は、したがって、これらの4行はまったく同じです。ワークシート「Express」に切り替え、範囲C20:G20を選択し、その範囲を一行下にコピーしました。

マクロを遅くし、通常はコードを理解しにくくするため、何も選択しないでください。

オートフィル方法の構文は次のとおりです。

SourceRange .AutoFill先:= DestinationRange、タイプ:= タイプ

だから、単一のすべてのパラメータを含めることが可能です私が持っているようにライン。

は考えてみましょう:

Type:=xlFillDefault 

マクロレコーダーは、ソースデータを見て、必要な塗りつぶしの種類の推測を行うようにコンパイラに指示しますxlFillDefaultにタイプを設定しています。 VB Helpでオートフィルを検索すると、すべてのタイプの塗りつぶしのリストが表示されます。あなたが望むものを選んでください。

概要

これは、あなたが求めていた詳細のレベルですか?必要に応じてさらに質問に戻りましょう。

+0

系統的で徹底的な答え!+1 –

+0

+1ダグと同意してください! –

+0

これらのルールを列全体に適用する必要があります。今は1つの行と選択された列のためです。 ありがとう! –

関連する問題