Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Format übertragen per Makro

Format übertragen per Makro
Wilhelm
Hallo,
ich erhalte täglich eine Textdatei mit Datensätzen, die ich über ein Query meiner Excel-Tabelle hinzufüge.
Die Anzahl der Datensätze variiert täglich (ca. zwischen 50 und 200).
In der Excel-Tabelle sind die bereits vorhandenen Datensätze formatiert (Rahmen etc.). Mit dem untenstehenden Makro übertrage ich das Format der Vorgängerzeile auf die neu eingespielten Datensätze, wobei ich leider die Anzahl nie so genau treffe, d.h. es ist Nacharbeit erforderlich.
Meine Frage: Wie müsste ich mein Makro verändern, dass nicht mehr und nicht weniger der neu eingespielten Zeilen (also alle neuen Datensätze unterhalb der formatgebenden Zeile) formatiert werden, also jeweils genau die richtige Anzahl neuer Datensätze?
Hier mein Makro:

Sub FormatÜbertragen()
ActiveCell.Offset(0, 0).Range("A1:K1").Select
Selection.Copy
ActiveCell.Offset(0, 0).Range("A2:K100").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End Sub

Vielen Dank für Eure Unterstützung!
Willi
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Format übertragen per Makro
13.09.2010 11:42:09
Backowe
Hi Willi,
Sub FormatÜbertragen()
Dim LZeile As Long
LZeile = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
Range("A1:K1").Copy
Range("A2:K" & LZeile).PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
End Sub
Gruß Jürgen
Anzeige
AW: Format übertragen per Makro
13.09.2010 12:18:45
Wilhelm
Hallo Jürgen,
vielen Dank für den Lösungsansatz - leider trifft es nicht ganz zu.
Ich habe im Makro einen relativen Bezug drin, daher ist Zelle A1 nicht "wörtlich" zu nehmen.
Vielmehr sind in den ersten 5 Zeilen (A1 bis K5) Tabellenüberschrift, Untertitel, 2 Leerzeilen und die Spaltenüberschriften enthalten.
Mit Deinem Lösungscode wird das Format demnach auf die neuen Datensätze PLUS 5 Zeilen übertragen.
Leider verstehe ich in Deinem Code die Zeile
"LZeile = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row"
auch nicht, so dass ich sie "zu meinen Gunsten" entsprechend verändern könnte.
Hast Du oder jemand anderes vielleicht noch Rat?
Willi
Anzeige
AW: Format übertragen per Makro
13.09.2010 12:23:21
Backowe
Hi,
mit "Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row" ermittele ich die letzte Zeile im Sheet. Dann ziehe einfach 5 ab von LZeile.
Gruß Jürgen
AW: Format übertragen per Makro
13.09.2010 12:42:24
Wilhelm
Hallo Jürgen,
das ist es leider nicht.
Nach meinen Tests überträgt Dein Lösungscode immer ausgehend vom absoluten Bezug A1 das Format, je nach Cursorposition teilweise auch in darüberliegende Zeilen. Das ist leider nicht gewollt.
Daher vielleicht noch mal etwas anders und evtl. verständlicher formuliert:
Ich habe den Cursor im letzten formatierten "alten" Datensatz stehen (z.B. A3250).
Darunter sind eine unbestimmte Anzahl neuer Datensätze - unformatiert.
Die neuen Datensätze sollen nun "per Klick" so formatiert werden wie der letzte "alte" Datensatz (also im Beispiel so wie Zeile A3250:K3250).
Danke für die Mühen!
Willi
Anzeige
Dann eben so!
13.09.2010 12:47:25
Backowe
Hi Willi,
Sub FormatÜbertragen()
Dim LZeile As Long
LZeile = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
Range("A" & ActiveCell.Row & ":K" & ActiveCell.Row).Copy
Range("A" & ActiveCell.Row + 1 & ":K" & LZeile).PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
End Sub
Gruß1
Anzeige
AW: Dann eben so!
13.09.2010 13:02:44
Wilhelm
Hi Jürgen,
ganz herzlichen Dank - das ist die Lösung meines Problems!
Viele Grüße,
Willi
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Formatübertragung per Makro in Excel VBA


Schritt-für-Schritt-Anleitung

Um das Excel VBA Makro zum Übertragen von Formaten effizient zu gestalten, befolge diese Schritte:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf dein Projekt im Projektfenster, wähle Einfügen und dann Modul.

  3. Füge den folgenden Code ein:

    Sub FormatÜbertragen()
       Dim LZeile As Long
       LZeile = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
       Range("A" & ActiveCell.Row & ":K" & ActiveCell.Row).Copy
       Range("A" & ActiveCell.Row + 1 & ":K" & LZeile).PasteSpecial Paste:=xlPasteFormats
       Application.CutCopyMode = False
    End Sub
  4. Verwende das Makro: Setze den Cursor in die Zeile des letzten formatierten Datensatzes und führe das Makro aus. Es überträgt die Formatierungen auf alle nachfolgenden unformatierten Zeilen.


Häufige Fehler und Lösungen

  • Fehler: Das Format wird auch auf unerwünschte Zeilen übertragen.

    • Lösung: Stelle sicher, dass der Cursor korrekt in der letzten formatierten Zeile positioniert ist, bevor du das Makro ausführst.
  • Fehler: Das Makro funktioniert nicht, wenn die Arbeitsmappe geschlossen ist.

    • Lösung: Stelle sicher, dass die Datei gespeichert und offen ist, bevor du das Makro ausführst.

Alternative Methoden

Wenn du keine VBA-Lösung verwenden möchtest, kannst du auch die Funktion "Format übertragen" in Excel nutzen:

  1. Wähle die formatierte Zelle aus.
  2. Klicke auf das Pinsel-Symbol in der Symbolleiste oder im Ribbon.
  3. Markiere die Zielzellen, um die Formatierung zu übernehmen.

Diese Methode ist besonders nützlich, wenn du nur gelegentlich Formatierungen übertragen möchtest.


Praktische Beispiele

  • Beispiel 1: Wenn du die Formatierung von Zeile 10 auf alle nachfolgenden Zeilen bis zur letzten Zeile übertragen möchtest, positioniere den Cursor in Zeile 10 und führe das Makro aus.

  • Beispiel 2: Um ein spezifisches Excel-Zahlenformat zu übertragen, kannst du den Code anpassen, um nur das Zahlenformat zu kopieren. Zum Beispiel:

    Range("A" & ActiveCell.Row).Copy
    Range("A" & ActiveCell.Row + 1 & ":A" & LZeile).PasteSpecial Paste:=xlPasteFormats

Tipps für Profis

  • Verwende Variablen: Überlege, den Bereich dynamisch zu machen, indem du Variablen für Zeilen und Spalten verwendest, um die Flexibilität des Makros zu erhöhen.

  • Fehlerbehandlung: Füge eine Fehlerbehandlung hinzu, um das Makro robuster zu machen. Dies kann helfen, unerwartete Fehler abzufangen und sinnvoll zu reagieren.

  • Makros speichern: Vergiss nicht, deine Arbeitsmappe als .xlsm zu speichern, um die Makros zu behalten.


FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen, um nur bestimmte Formate zu übertragen?
Du kannst den Code so anpassen, dass nur bestimmte Formatierungen kopiert werden, indem du xlPasteFormats durch spezifische Optionen ersetzt.

2. Funktioniert das Makro in allen Excel-Versionen?
Das VBA-Makro sollte in den meisten modernen Excel-Versionen (ab Excel 2007) funktionieren. Achte darauf, dass deine Excel-Version Makros unterstützt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige