2017-02-21 6 views
1

Ich versuche, einen Code zu schreiben, um die letzte Spalte in einem Arbeitsblatt x-mal automatisch zu füllen.AutoFill-Spalte über dynamischen Start

Ich habe den Code, der die letzte Spalte abholt:

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

und auch Code, der über Autofill würde, wenn ich bestimmte Spalten festlegen, welche

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

Was ich mit ist habe Schwierigkeiten, wie Ersetzen Sie die Spalten "BE: BQ" mit dem erforderlichen Code, der mit der ursprünglichen letzten Spalte (LC) verknüpft ist. Idealerweise möchte ich, dass es automatisch hinzugefügt wird, um z. B. 10 neue Spalten hinzuzufügen. Hast du irgendeinen Ratschlag?

Idealerweise möchte ich, dass der Code alle Arbeitsblätter in meinem Arbeitsbuch durchläuft - aber das ist wahrscheinlich ein bisschen fortgeschritten für mich!

Vielen Dank im Voraus.

UPDATE

Vielen Dank für Ihre vorgeschlagene Kommentare. Ich habe den Code wie folgt geändert. Dies schien zunächst perfekt zu funktionieren. Seitdem bin ich auf zwei Probleme gestoßen.

Ausgabe 1 - auf einigen Blättern, wenn es sich über ein Datumsfeld füllt, das in Zeile 3 nicht gefüllt ist. Es kopiert nur über das Datum genau das gleiche wie das in der letzten Zeile (d. H. 01/06/2017, wird aber als Jun-17 angezeigt). Ich möchte, dass dies über einen Monat nach dem anderen gefüllt wird.

Ausgabe 2 - In Zeile 2 gibt es ein Datum, das der letzte Tag des vorherigen Monats ist. Dies wird derzeit manuell eingegeben, aber da ich das Makro entwickelt habe, möchte ich, dass dies in eine Formel gleich dem Datum in der Zelle minus 1 Tag geändert wird. Ich habe versucht, dies mit der folgenden Formel zu tun, aber es ging völlig schief!

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

Irgendwelche Ratschläge, wie man diese zwei Probleme beheben würde am meisten geschätzt werden.

+0

Ein Ansatz ist 'Zellen (1, LC) .resize (10) .entirecolumn.autofill' aber tun Sie wirklich die ganze Spalte füllen wollen (und die Auswahl ist normalerweise nicht ratsam oder notwendig). – SJR

+0

Es muss nicht sein - ich könnte in einer letzten Zeile Berechnung hinzufügen und AutoFill über diesen Weg. Wie sollte die VBA angepasst werden, wenn LR die berechnete letzte Zeile ist? – hann783

+0

Bitte verschieben Sie Ihre Antwort auf eine tatsächliche Antwort, anstatt Ihre Frage mit der Antwort zu bearbeiten, und markieren Sie die Antwort dann als angenommen nach Ablauf einer zugewiesenen Zeit. Dies erleichtert es anderen Benutzern, die Antwort zu finden. \ –

Antwort

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

Versuchen Sie es. Ich bin mir nicht sicher über das A2-Bit, da der Code vorschlägt, dass die automatische Füllung in Zeile 3 beginnt, aber kann auch 3 durch 2 im Code ersetzen, wenn es auch enthalten sein sollte.

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 
Verwandte Themen