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

Forumthread: VBA Code nach einfügen von Spalten

VBA Code nach einfügen von Spalten
Spalten
Hallo zusammen,
immer wieder muss ich recht umfangreichen Code überarbeiten, nachdem ich Spalten einfügen musste.
Gibt es eine Möglichkeit dies zu automatisieren. Also, den Code per code zu überarbeiten?
Kann man mit Bereichsnamen etwas anfangen?
Beispiel Codeschnipsel:
Windows(quelldatei).ActiveSheet.Range("C" & Monat).Copy
Wenn ich nun vor Salte C eine neue Spalte einfüge muss ich nun den Code abändern in
Windows(quelldatei).ActiveSheet.Range("D" & Monat).Copy
Na ja das ist logisch - aber auch irre lästig, bei Tabellen mit über 40 Spalten.
Wer hat eine Idee, oder gar Lösung?
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA Code nach einfügen von Spalten
30.06.2009 15:43:34
Spalten
Hallo Michael,
speichere die Spalte in einer Variablen oder mehreren und greif auf diese zu:
dim mySpalte as string
mySpalte = "Z"
Windows(quelldatei).ActiveSheet.Range(mySpalte & Monat).Copy
AW: VBA Code nach einfügen von Spalten
30.06.2009 16:37:00
Spalten
Danke!
AW: VBA Code nach einfügen von Spalten
30.06.2009 17:05:35
Spalten
Hallo Michael,
benutz doch einfach Namen für die Bereiche. Die wandern mit wenn du was einfügst und du musst dich um nichts im Code kümmern. Der Name muss dabei einen relativen Bezug haben. Also die $-Zeichen löschen!!!
Gruß
Nepumuk
Anzeige
Quatsch
30.06.2009 17:48:50
Nepumuk
Hi,
natürlich darfst du die $-Zeichen nicht löschen, wenn du das machst, wird der Name mehr oder weniger unkontrolliert verschoben.
Gruß
Nepumuk
Spalten suchen
01.07.2009 00:01:31
Daniel
Hi
wenn die Quelldatei Spaltenüberschriften enthält, die sich nicht oder selten ändern, dann kannst du für die Spaltennummern Variablen einrichten, die du zum Makrostart immer aktualisierst.
hier ein Beispiel, sagen mir mal in der Spalte C stehen die "Ausgaben":

sub Dein Makro
dim spAusg as Long 'SpaltenNr der Ausgaben
spAusg = Windows(Quelldatei).Activesheet.Rows(1).Find(What:="Ausgaben", Lookat:=xlwhole).Column
Windows(Quelldatei).Activesheet.Cells(Monat, spAusg).Copy
End sub


Solange du die Spaltenüberschrift "Ausgaben" nicht änderst, kannst du Spalten verschieben und Einfügen wie du willst, ohne dein Makro ändern zu müssen.
Änderst du die Spaltenüberschrift, dann läuft dein Makro auf einen Fehler und du merkst, daß du was anpassen musst, es ist also auch eine kleine Schutzfunktion dagegen, daß du mal eine Änderung in der Datei nicht im Makro anpasst
Es ist zwar am anfang etwas mühlsehlig, die Spaltennummernabfrage zu programmieren, aber dann hast du Ruhe.
Gruß, Daniel

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Automatisierung von VBA-Code beim Einfügen von Spalten in Excel


Schritt-für-Schritt-Anleitung

  1. Variablen für Spaltennamen erstellen: Speichere die Spalte, auf die du zugreifen möchtest, in einer Variablen. Dadurch musst du den VBA-Code nicht nach dem Einfügen von Spalten anpassen.

    Dim mySpalte As String
    mySpalte = "C" ' oder eine andere Spalte
    Windows(quelldatei).ActiveSheet.Range(mySpalte & Monat).Copy
  2. Bereichsnamen verwenden: Benutze benannte Bereiche, die sich automatisch anpassen, wenn du Spalten einfügst. Achte darauf, dass du die $-Zeichen in den Namen entfernst.

  3. Spaltennummern dynamisch ermitteln: Wenn deine Quelldatei Spaltenüberschriften enthält, kannst du die Spaltennummer dynamisch ermitteln.

    Dim spAusg As Long ' SpaltenNr der Ausgaben
    spAusg = Windows(quelldatei).ActiveSheet.Rows(1).Find(What:="Ausgaben", LookAt:=xlWhole).Column
    Windows(quelldatei).ActiveSheet.Cells(Monat, spAusg).Copy

Häufige Fehler und Lösungen

  • Fehler bei Bereichsnamen: Wenn du die $-Zeichen im Namen entfernst, kann der Bereich falsch verschoben werden. Achte darauf, dass du diese Zeichen beibehältst, um unerwartete Fehler zu vermeiden.

  • Code funktioniert nicht nach Spalteneinfügung: Stelle sicher, dass du die Spaltennummer dynamisch ermittelst, anstatt sie statisch im Code zu hinterlegen. So bleibt dein Code auch nach Änderungen in der Tabelle funktionsfähig.


Alternative Methoden

  • Nutzung von Excel-Tabellen: Wenn du deine Daten in einer Excel-Tabelle (ListObject) speicherst, passen sich die Formeln und VBA-Referenzen automatisch an, wenn du Spalten einfügst.

  • Verwendung des Application.WorksheetFunction: Du kannst auch Funktionen von Excel direkt in deinem VBA-Code nutzen, um dynamisch auf Daten zuzugreifen.


Praktische Beispiele

  1. Kopieren von Daten in eine neue Spalte:

    Sub KopiereDaten()
       Dim mySpalte As String
       mySpalte = "C"
       Windows(quelldatei).ActiveSheet.Range(mySpalte & Monat).Copy
    End Sub
  2. Dynamisches Ermitteln der Spalte "Ausgaben":

    Sub DatenKopieren()
       Dim spAusg As Long
       spAusg = Windows(quelldatei).ActiveSheet.Rows(1).Find(What:="Ausgaben", LookAt:=xlWhole).Column
       Windows(quelldatei).ActiveSheet.Cells(Monat, spAusg).Copy
    End Sub

Tipps für Profis

  • Nutze Option Explicit am Anfang deiner Module, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden und den Code klarer zu gestalten.

  • Halte deinen Code modular, indem du Funktionen schreibst, die spezifische Aufgaben erledigen. So bleibt dein Code übersichtlich und leichter zu pflegen.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass mein VBA-Code auch nach dem Einfügen von Spalten funktioniert? Verwende Variablen, um Spaltennamen zu speichern, und dynamisiere deine Spaltenreferenzen, indem du die Spaltennummern über die Überschriften ermittelst.

2. Was passiert, wenn ich eine Spaltenüberschrift ändere? Wenn du eine Spaltenüberschrift änderst, die in deinem Code verwendet wird, kann es zu einem Fehler kommen. Stelle sicher, dass du solche Änderungen im Code anpasst, um Probleme zu vermeiden.

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