2017-02-21 16 views
1

ワークシートの最後の列を右にx回自動入力するコードを記述しようとしています。私はどのようにされて苦しんでいますどのようなその特定の列動的開始の自動入力列

Selection.AutoFill Destination:=Columns("BE:BQ"), Type:=xlFillDefault 

を指定した場合

With ActiveSheet 
LC = .Cells(3, .Columns.Count).End(xlToLeft).Column 
End With 
Columns(LC).Select 

と、コード全体で自動入力します:

私は最後の列をピックアップするコードを持っています元の最終列(LC)にリンクされている必要なコードで、列「BE:BQ」を置き換えます。 理想的には、新しい列を10個追加するために自動入力したいと思います。アドバイスはありますか?

理想的には、ワークブック内のすべてのワークシートを循環させるコードが理想的ですが、これはおそらく私のためには少し先進的です!

ありがとうございます。

UPDATE

あなたの提案のコメントをいただき、ありがとうございます。私は以下のコードを修正しました。これは最初は完全に機能するように見えました。しかし、私は以来2つの問題を抱えてきました。

第1号 - 行3にある日付フィールドを塗りつぶしたときに、一部のシートに塗りつぶされません。最後の行の日付とまったく同じ日付にコピーされます(つまり、06年1月6日ですが、6月17日に表示されます)。私はこれを一度に1ヶ月に渡って埋めることを望みます。

問題2 - 行2には、前月の最終日である日付があります。これは現在手動で入力されていますが、私がマクロを開発したので、これをマイナス1日以下のセルの日付に等しい式に変更したいと思います。私は次の式を使ってこれをしようとしましたが、それは完全に間違っていました!

sht.Cells(2, LC).Formula = "=" & Cells(3, LC) & "-1" 

この2つの問題を解決する方法についてのアドバイスは、最も高く評価されます。

+0

一つのアプローチは、 'セル(1、LC).resize(10).entirecolumn.autofill'ですが、あなたは本当に列全体を埋めるためにしたい(と選択は、通常はお勧めか必要はありません)です。 – SJR

+0

これは必須ではありません。最後の行の計算に追加し、そのようにして自動入力することができます。 LRが計算された最後の行であると仮定して、VBAはどのように調整されますか? – hann783

+0

答えを使って質問を編集するのではなく、答えを実際の回答に移動して、割り当てられた時間が経過した後に回答を受け入れたものとしてマークしてください。 \ –

答えて

0
Dim LC As Integer 
Dim LR As Long 

ActiveSheet.Unprotect 

With ActiveSheet 
    LC = .Cells(3, .Columns.Count).End(xlToLeft).Column 
    LR = .Cells(Rows.Count, LC).End(xlUp).Row 
End With 

Range(Cells(1, LC), Cells(LR, LC)).Select 

Selection.AutoFill Destination:=Range(Cells(1, LC), Cells(LR, LC + 10)),Type:=xlFillDefault 
0

これを試してください。私はA2ビットについては分かりませんが、コードが行3で自動入力を開始することを示唆していますが、もしそれが含まれていなければ、コード内で3を2に置き換えることもできます。

Sub x() 

Dim LC As Long, LR As Long, ws As Worksheet 

For Each ws In Worksheets 
    With ws 
     LC = .Cells(3, .Columns.Count).End(xlToLeft).Column 
     LR = .Cells(.Rows.Count, 1).End(xlUp).Row 

     .Range(.Cells(3, LC), .Cells(LR, LC)).AutoFill Destination:=.Range(.Cells(3, LC), .Cells(LR, LC + 10)), Type:=xlFillDefault 
     .Cells(3, LC).AutoFill Destination:=.Cells(3, LC).Resize(, 10), Type:=xlFillMonths 
     .Range("A2").Formula = "=A3-1" 
    End With 
Next ws 

End Sub 
関連する問題