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

Forumthread: leere Spalte immer rechts einfügen

leere Spalte immer rechts einfügen
10.11.2021 13:26:02
Christian
Hallo zusammen,
mein Anliegen hört sich einfach an, jedoch komme ich nicht auf die endgültige Lösung.
Ich möchte gerne in dem angehängten Beispiel per VBA Makro (Button "neues Teil einfügen") eine neue Spalte rechts von einer (links) bestehenden Spalte einfügen, wobei alle Formatierungen hier mit kopiert werden sollen. Die eingefügte Spalte soll aber dann einen leeren Inhalt haben - Sheet-1 zu Sheet-2 mit eingefügter Spalte I als Kopie von Spalte H. Bei erneutem Druck soll dann die ausgefüllte Spalte I in Spalte K kopiert werden und auch wieder leer sein usw. - siehe Sheet-3.
Die Makros die ich aufzeichnen bzw. im Forum finde, beziehen sich immer auf eine feste Spalte die kopiert/eingefügt werden soll. Bei mir verschiebt sich ja immer der Bereich, der kopiert wird nach rechts weiter.
Genau das gleiche Problem würde ich dann gerne mit Zeilen (Button "neue Zeile einfügen") machen. Es sollte immer per Button die vorherige Zeile kopiert und unten drunter eine Zeile eingefügt werden - siehe Sheet-2 zu Sheet 3 mit eingefügter leerer Zeile 43.
Somit verschiebt sich dann auch immer der Einfügebereich, was mein eigentliches Problem ist :-(
https://www.herber.de/bbs/user/149049.xlsx
Es wäre Klasse, wenn mir hier jemand helfen könnte :-)
Viele Grüße
Christian
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: leere Spalte immer rechts einfügen
10.11.2021 13:53:28
Stefan
Hallo Christian,
anbei die Datei mit dem Code.
Ich hab es kommentiert, so sind evtl. die Gedankengänge hinter den Codezeilen ersichtlich.
https://www.herber.de/bbs/user/149051.xlsm
Viel Erfolg weiterhin und Gruß
Stefan
Anzeige
AW: leere Spalte immer rechts einfügen
10.11.2021 15:02:03
Christian
Hallo Stefan,
vielen Dank für die schnelle Hilfe. Gehe ich richtig der Annahme, dass die Tabelle in dem Beispiel "Tabelle 20" heißt und ich diese auch ersetzten kann z.B. mit "ThisWorkbook.Worksheets("Sheet-1"), um ein gezieltes Tabellenblatt anzusprechen?
Kann ich die Range-Abfrage (z.B.: lzeile = Tabelle20.Range("B11:B2000")) auch verschieben, do dass z.B. ab B10 oder auch F10 gesucht wird. Ich habe hier mal alle Zeilen bis auf die erste Ausgefüllte Zeile 10 zu löschen und dann geht das Makro nicht mehr ;-(
Bei der Spalte funktioniert es soweit ich lösche alle Spalten bis auf Teil 1 und kann dann Teil 2 usw. per Klick auf den Butten einfügen = Perfekt :-) Hierzu nur die Frage, das Beispiel von mir ist aus meiner endgültigen Tabelle nur herauskopiert. Das Teil 1 ist nur im Beispiel in der Spalte F. In Wirklichkeit wäre es Spalte O. Inwiefern verschiebt sich das Makro?
Viele Grüße
Christian
Anzeige
AW: leere Spalte immer rechts einfügen
10.11.2021 15:26:15
Werner
Hallo,
hier mal meine Version.

Private Sub CommandButton1_Click()
'Neue Zeile
Dim loLetzte As Long
Application.ScreenUpdating = False
With Worksheets("Sheet-1")
loLetzte = .Cells(.Rows.Count, "B").End(xlUp).Row
.Rows(loLetzte).Copy .Rows(loLetzte).Offset(1)
.Rows(loLetzte).Offset(1).ClearContents
End With
End Sub
Private Sub CommandButton2_Click()
'Neue Spalte
Dim loSpalte As Long
Application.ScreenUpdating = False
With Worksheets("Sheet-1")
loSpalte = .Cells(9, .Columns.Count).End(xlToLeft).Column
.Columns(loSpalte).Offset(, -2).Copy
.Columns(loSpalte).Offset(, -1).Insert
.Columns(loSpalte).Offset(, -1).ClearContents
If IsNumeric(Right(.Cells(9, loSpalte).Offset(, -2), 1)) Then
.Cells(9, loSpalte).Offset(, -1) = "Teil " _
& Format(Right(.Cells(9, loSpalte).Offset(, -2), 2) + 1, "00")
Else
.Cells(9, loSpalte).Offset(, -1) = "Teil"
End If
End With
Application.CutCopyMode = False
End Sub
Für das Einfügen von Zeilen:
die letzte belegte Zelle wird in Spalte B von unten nach oben ermittelt.
Für das Einfügen von Spalten:
die letzte belegte Zelle wird in Zeile 9 (Überschriften) von links nach rechts ermittelt.
Keine Ahnung weshalb hier immer wieder Beispielmappen hochgeladen werden, die dann in ihrem Aufbau wohl nicht wirklich viel mit der Originalmappe zu tun haben.
Und dann wundert man sich, dass das Makro nicht läuft.
Gruß Werner
Anzeige
AW: leere Spalte immer rechts einfügen
10.11.2021 15:53:41
Christian
Hallo Werner,
das Makro mit dem Zeile einfügen funktioniert auch bei meiner Version. Die Spalte mit dem Teil 01 ist in Wirklichkeit Spalte N (als Spalte 14) und der Begriff "Teil 01" ist in Zelle "N24".
Leider kann ich nur Teile aus Datenschutzgründen hier in das Forum laden. Ich möchte Dich daher um Verständnis bitten.
Viele Grüße
Christian
Anzeige
dann anonymisiere...
10.11.2021 16:17:32
Werner
Hallo,
...die Daten und lade die Datei hoch. Was ich und alle anderen Helfer hier brauchen ist eine Datei, die in ihrem Aufbau exakt dem Original entspricht. Was für Daten da drin stehen interessiert hier niemanden.
Und mein Hinweis zu deinen "Textzahlen" hat dich wohl nicht interessiert.
Ohne Datei bin ich raus.
Gruß Werner
Anzeige
übrigens...
10.11.2021 15:35:56
Werner
Hallo,
...dir ist schon klar, dass in deiner Beispielmappe in den Zeilen 15, 18 und 19 (Spalten F-H) Text steht und keine Zahl?
Weshalb auch deine Min/Max Formeln 0 ausgeben.
Gruß Werner
AW: leere Spalte immer rechts einfügen
10.11.2021 17:17:36
Stefan
Hallo Christian,
sorry erstmal, ich bin erst jetzt wieder an meinen Rechner gekommen
natürlich kannst du Tabelle20 auch mit dem Tabellennamen ansprechen. Sprich mit "Worksheets("Namen")"
Ich hab den geänderten Code in die Tabelle eingefügt.
https://www.herber.de/bbs/user/149059.xlsm
Werner hat natürlich recht
Für das nächste mal, eine anonymisierte Bsp.Datei ist viel sinnvoller als etwas nachgebautes, welches nicht der wirklichkeit entspricht.
ODER
Die 2te Datei EXACT so aufbauen, wie es in der OriginalDatei auch ist.
Gruß
Stefan
Anzeige
AW: leere Spalte immer rechts einfügen
11.11.2021 10:44:04
Christian
Hallo Stefan, Hallo Werner,
Danke noch einmal für Eure Hilfe.
Mir ist gerade noch aufgefallen, dass derzeit der komplette Inhalt der eingefügten Zeile gelöscht wird, jedoch sind in dem hochgeladenen Beispiel ja in Spalte B/C/D ja Formeln drin, welche dann auch mit gelöscht werden.
Leer sollten dann wirklich nur die Zellen leer sein, die ich dann neu beschreibe - sprich alles in dem Beispiel ab Spalte F also beginnend ab Teil 1.
Das würde ja dann eine Einschränkung der Formel bedeuten
Tabelle20.Rows(lzeile).ClearContents
Viele Grüße
Christian
Anzeige
AW: leere Spalte immer rechts einfügen
11.11.2021 10:52:09
Stefan
Hallo Christian,
ich vermute mal der Rest hat funktioniert.

Tabelle20.Range(cells(lzeile,1),cells(lzeile,3)).ClearContents
Im o.g. Beispiel wird in der Betreffenden Zeile die Spalte A bis C geleert. Jeh nachdem wie dein Bereich aussieht, bitte Eintragen.
Spalte A = 1
Spalte C = 3
usw.
Gruß
Stefan
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Leere Spalte immer rechts einfügen in Excel


Schritt-für-Schritt-Anleitung

Um in Excel eine leere Spalte rechts einzufügen, kannst du die folgenden Schritte ausführen:

  1. Öffne die Excel-Datei, in der du eine leere Spalte einfügen möchtest.

  2. Aktiviere die Entwicklertools (falls nicht vorhanden, aktiviere sie in den Excel-Optionen).

  3. Füge einen Button hinzu und verknüpfe ihn mit einem Makro.

  4. Füge den folgenden VBA-Code in das Makro ein:

    Private Sub CommandButton1_Click()
       Dim loSpalte As Long
       Application.ScreenUpdating = False
       With Worksheets("Sheet-1")
           loSpalte = .Cells(9, .Columns.Count).End(xlToLeft).Column
           .Columns(loSpalte).Offset(, -1).Copy
           .Columns(loSpalte).Insert
           .Columns(loSpalte).ClearContents
           .Cells(9, loSpalte).Offset(, -1) = "Neuer Teil"
       End With
       Application.CutCopyMode = False
    End Sub
  5. Teste das Makro durch Klicken auf den Button. Es sollte eine leere Spalte rechts von der letzten belegten Spalte eingefügt werden.


Häufige Fehler und Lösungen

  • Fehler: Excel Spalte einfügen geht nicht
    Lösung: Überprüfe, ob das Arbeitsblatt geschützt ist. Ein geschütztes Blatt erlaubt keine Änderungen.

  • Fehler: Leere Spalte wird nicht kopiert
    Lösung: Stelle sicher, dass der Bereich, den du kopieren möchtest, korrekt definiert ist. Überprüfe den VBA-Code auf mögliche Fehler.

  • Fehler: Makro funktioniert nicht
    Lösung: Achte darauf, dass du die richtige Arbeitsmappe und das korrekte Tabellenblatt im Code angibst.


Alternative Methoden

  1. Manuelles Einfügen der Spalte:

    • Rechtsklick auf die Spalte, neben der du die leere Spalte einfügen möchtest, und wähle „Spalte einfügen“.
  2. Verwenden von Excel-Funktionen:

    • Du kannst die Funktion ="" in der neuen Spalte verwenden, um sie leer erscheinen zu lassen.

Praktische Beispiele

  • Beispiel 1:
    Du möchtest in „Sheet-1“ eine leere Spalte rechts von der letzten belegten Spalte einfügen. Nutze den obigen VBA-Code. Nach dem ersten Klick auf den Button wird eine leere Spalte eingefügt.

  • Beispiel 2:
    Wenn du mehrere Spalten einfügen möchtest, verwende eine Schleife:

    For i = 1 To 3
       ' Hier wird jede neue Spalte rechts von der letzten Spalte eingefügt
       Call CommandButton1_Click
    Next i

Tipps für Profis

  • Leere Spalte kopieren: Wenn du eine bereits formatierte leere Spalte erstellen möchtest, kopiere die Formatierungen einer bestehenden Spalte und füge sie in die neue Spalte ein, bevor du den Inhalt löscht.

  • VBA-Optimierung: Reduziere die Anzahl der Bildschirmaktualisierungen während der Makroausführung mit Application.ScreenUpdating = False. Dies verbessert die Performance.

  • Verwendung von dynamischen Bereichen: Verwende End(xlUp) oder End(xlToLeft), um dynamisch die letzte belegte Zelle zu finden, anstatt feste Zellreferenzen zu verwenden.


FAQ: Häufige Fragen

1. Wie kann ich mehrere leere Spalten auf einmal einfügen?
Du kannst eine Schleife im VBA-Code verwenden, um mehrere Spalten hintereinander einzufügen.

2. Können die Spaltenformatierungen erhalten bleiben?
Ja, indem du die Formatierungen der bestehenden Spalte kopierst, bevor du die leere Spalte einfügst.

3. Was tun, wenn das Makro nicht funktioniert?
Überprüfe den VBA-Code auf Syntaxfehler und stelle sicher, dass die Arbeitsmappe nicht geschützt ist.

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