Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Kopieren per VBA; auch die Spaltenbreiten?

Kopieren per VBA; auch die Spaltenbreiten?
03.05.2005 15:22:16
Peter
Hallo Ihr Lieben,
ich möchte mit nachstehendem Code u.a. auch die Spaltenbreiten mit kopieren; ich dachte dies wäre im Befehl xlPasteFormats mit drin; scheint es aber nicht zu sein, oder ist etwas anderes falsch?

Private Sub CmdButton1_click()
For a = 3 To 9 Step 1
If frmAuswertungB.ComboBox1.Value = ("200" & a & " " & "monatlich") Then
Sheets("Bm200" & a).Range("A1:AO1000").ClearContents
Sheets("KopieB").Activate
Sheets("KopieB").Range("A1:AO1000").Copy
Sheets("Bm200" & a).Range("A1").PasteSpecial Paste:=xlPasteValues
Sheets("Bm200" & a).Range("A1").PasteSpecial Paste:=xlPasteFormats
End If
Next a
End Sub

Vielen Dank für Hilfe
Peter Sohr
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Kopieren per VBA; auch die Spaltenbreiten?
03.05.2005 15:40:53
Nepumuk
Hallo Peter,
die Firma hat da irgend etwas vergessen. So geht's:
Sheets("Bm200" & a).Range("A1").PasteSpecial Paste:=8
Gruß
Nepumuk
AW: Kopieren per VBA; auch die Spaltenbreiten?
03.05.2005 15:42:29
ingoG
Hallo Peter,
ich nehme mal an, das unter zeile 1000 nichts mehr steht, dann kannst Du einfach die gesamte Spalte kopieren.
Da die Spaltenbreite nicht individuell für einzelne Zellen innnerhalb einer spalte gesetzt werden kann, sollte das problem dann behoben sein.
Gruß Ingo
PS eine Rückmeldung wäre nett...
Anzeige
Hallo Nepumuk und Ingo
03.05.2005 15:59:07
Peter
Hallo Ihr Beiden,
ja Ingo Deine Lösung is vollkommen korrekt... Ich habe einfach jeweils den Bereich ("A1:AO1000") ersetzt durch ("A:AO") und schon funktioniert es; anscheinend wird das Spaltenformat (in diesem Fall die Breite) erst dann mitkopiert wenn die gesamte Spalte kopiert wird.
Nepumuk: wäre für mich noch interessant zu wissen wofür in deinem Code das ":8" steht?
Vielen Dank Ihr Beiden
Peter S.
Anzeige
Danke für die Rückmeldung oT
03.05.2005 16:05:14
ingoG
.
AW: Hallo Nepumuk und Ingo
03.05.2005 16:21:59
Nepumuk
Hallo Peter,
alle xl..... sind Konstanten von Excel (VB - Konstanten beginnen mit vb.... Office - Konstanten mit mso...). Die für Pastespecial sind nicht vollständig. Aber wenn die Werte der Konstanten bekannt sind, kannst du auch diese einsetzen.
xlPasteAll = -4104
xlPasteFormulas = -4123
xlPasteValues = -4163
xlPasteFormats = -4122
xlPasteComments = -4144
Gültigkeit = 6 (hier wurde die Konstante vergessen)
xlPasteAllExceptBorders = 7
Spaltenbreite = 8 (hier ebenso)
Gruß
Nepumuk
Anzeige
Danke für die Info...
05.05.2005 10:19:09
ingoG
...kannte ich auch noch nicht.
Gruß Ingo
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Spaltenbreiten in Excel mit VBA kopieren


Schritt-für-Schritt-Anleitung

Um in Excel Spaltenbreiten beim Kopieren mit VBA zu übernehmen, kannst du den folgenden Code verwenden. Dieser sorgt dafür, dass die Spaltenbreiten beibehalten werden:

Private Sub CmdButton1_click()
    For a = 3 To 9 Step 1
        If frmAuswertungB.ComboBox1.Value = ("200" & a & " " & "monatlich") Then
            Sheets("Bm200" & a).Range("A:AO").ClearContents
            Sheets("KopieB").Activate
            Sheets("KopieB").Range("A:AO").Copy
            Sheets("Bm200" & a).Range("A1").PasteSpecial Paste:=xlPasteValues
            Sheets("Bm200" & a).Range("A1").PasteSpecial Paste:=8 ' 8 steht für xlPasteColumnWidths
        End If
    Next a
End Sub

In diesem Code wird die gesamte Spalte kopiert, was sicherstellt, dass die Spaltenbreite beibehalten wird. Achte darauf, dass dein Excel-Dokument keine Daten unter Zeile 1000 hat, damit alles reibungslos funktioniert.


Häufige Fehler und Lösungen

  1. Fehler: Spaltenbreiten bleiben nicht erhalten

    • Lösung: Stelle sicher, dass du die gesamte Spalte kopierst, anstatt nur einen bestimmten Zellbereich. Verwende Range("A:AO"), um die Spaltenbreiten zu übertragen.
  2. Fehler: PasteSpecial funktioniert nicht wie gewünscht

    • Lösung: Überprüfe, ob du den richtigen Wert für Paste verwendest. Verwende 8 für xlPasteColumnWidths, um die Spaltenbreiten zu kopieren.

Alternative Methoden

Wenn du die Spaltenbreiten nicht über VBA kopieren möchtest, kannst du auch die folgenden Methoden verwenden:

  • Manuelles Kopieren: Kopiere die gesamte Spalte in Excel, indem du mit der rechten Maustaste auf die Spaltenüberschrift klickst und "Kopieren" auswählst. Danach kannst du mit einem Rechtsklick an die gewünschte Stelle und "Einfügen" verwenden.

  • Excel-Funktion: Du kannst auch die Funktion „Einfügen“ im Ribbon verwenden und Spaltenbreite beibehalten auswählen.


Praktische Beispiele

  1. Kopieren einer Tabelle Um eine Excel-Tabelle mit Spaltenbreite und Zeilenhöhe zu kopieren, verwende die oben genannten VBA-Skripte. Achte darauf, dass die Zielblätter leer sind, um Konflikte zu vermeiden.

  2. Übertragen von Zellen mit spezifischen Formaten Verwende xlPasteFormats, wenn du spezifische Formate ohne Werte kopieren möchtest. Dies kann hilfreich sein, um das Design deiner Excel-Seiten zu bewahren.


Tipps für Profis

  • VBA-Kennzahlen: Lerne die VBA-Konstanten für das Einfügen von Formaten. Beispiele sind:

    • xlPasteAll = -4104
    • xlPasteValues = -4163
    • xlPasteFormats = -4122
  • Optimierung des Codes: Verwende Application.ScreenUpdating = False und Application.Calculation = xlCalculationManual, um die Ausführungsgeschwindigkeit des Codes zu erhöhen, besonders bei großen Datenmengen.


FAQ: Häufige Fragen

1. Wie kann ich die Spaltenbreite auf andere Blätter übertragen? Um die Spaltenbreiten auf andere Blätter zu übertragen, kannst du den gleichen VBA-Code verwenden und die Zielblätter entsprechend anpassen.

2. Was bedeutet das :8 in meinem Code? Das :8 steht für die Konstante xlPasteColumnWidths, die dafür sorgt, dass die Spaltenbreiten beim Einfügen übernommen werden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige