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

Forumthread: Werte in nächste freie Spalte schreiben

Werte in nächste freie Spalte schreiben
02.08.2016 13:42:18
Dove
Guten Tag liebes Forum,
mir wurde hier bereits häufig geholfen und ich hoffe, dass es diesmal ebenso klappt.
Also folgende Situation:
Ich habe ein Makro mit dem ich in einer Tabelle nach einem bestimmten Wort suche. Wenn es gefunden wurde, wird die ganze Spalte kopiert und in ein neues Sheet, Spalte C eingefügt.
Jetzt zum Problem:
Wie muss ich den Code umschreiben, wenn ich eine weitere Spalte in das gleiche Sheet einfügen will, aber nicht in Spalte C, sondern in die nächste freie Spalte?
Hier noch der Code zum besseren Verständnis:
Worksheets(3).Select
' gewünschte Spalten werden gesucht und gesamte Spalte wird kopiert
' und in eine neue Mappe eingefügt
Do
On Error Resume Next
strS = InputBox("Suchbegriff:", Value "", strS)
If StrPtr(strS) = 0 Or Len(strS) = 0 Then Exit Do
Set rngT = Rows(1).Find(What:=strS, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False).EntireColumn.Copy
Sheets(Worksheets.Count).Paste Destination:=Sheets(Worksheets.Count).Columns("C:C")
Worksheets(3).Select
Loop
End Sub
Vielen Dank im Voraus
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte in nächste freie Spalte schreiben
02.08.2016 14:04:41
ChrisL
Hi
Sub t()
Dim WS1 As Worksheet, WS2 As Worksheet
Dim letzteSpalte As Integer
Set WS1 = Worksheets(3)
Set WS2 = Worksheets(Worksheets.Count)
Do
On Error Resume Next
strS = InputBox("Suchbegriff:", Value  "", strS)
If StrPtr(strS) = 0 Or Len(strS) = 0 Then Exit Do
Set rngT = WS1.Rows(1).Find(What:=strS, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False).EntireColumn.Copy
letzteSpalte = WS2.Range("IV1").End(xlToLeft).Column + 1
WS2.Paste Destination:=WS2.Columns(letzteSpalte)
Application.CutCopyMode = False
Loop
End Sub

cu
Chris
Anzeige
AW: Werte in nächste freie Spalte schreiben
02.08.2016 14:30:22
Dove
Hallo Chris,
vielen vielen Dank.
Klappt wunderbar.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Werte in nächste freie Spalte schreiben


Schritt-für-Schritt-Anleitung

Um Werte in die nächste freie Spalte in einem Excel-Sheet zu schreiben, kannst du das folgende VBA-Makro verwenden. Dieses Beispiel basiert auf dem Thread im Forum und zeigt, wie du deinen bestehenden Code anpassen kannst.

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel (Alt + F11).
  2. Füge ein neues Modul hinzu (Rechtsklick auf „VBAProject“ > Einfügen > Modul).
  3. Kopiere den folgenden Code und füge ihn in das Modul ein:
Sub t()
    Dim WS1 As Worksheet, WS2 As Worksheet
    Dim letzteSpalte As Integer
    Set WS1 = Worksheets(3) ' Arbeitsblatt mit den Daten
    Set WS2 = Worksheets(Worksheets.Count) ' Zielarbeitsblatt
    Do
        On Error Resume Next
        strS = InputBox("Suchbegriff:", Value:="", strS)
        If StrPtr(strS) = 0 Or Len(strS) = 0 Then Exit Do
        Set rngT = WS1.Rows(1).Find(What:=strS, LookIn:=xlValues, _
            LookAt:=xlWhole, SearchOrder:=xlByRows, _
            SearchDirection:=xlNext, MatchCase:=False).EntireColumn.Copy
        letzteSpalte = WS2.Range("IV1").End(xlToLeft).Column + 1
        WS2.Paste Destination:=WS2.Columns(letzteSpalte)
        Application.CutCopyMode = False
    Loop
End Sub
  1. Schließe den VBA-Editor und gehe zurück zu Excel.
  2. Führe das Makro aus (Alt + F8, wähle „t“ und klicke auf „Ausführen“).

Häufige Fehler und Lösungen

  • Fehler: „Objektvariable nicht gesetzt“

    • Stelle sicher, dass der Suchbegriff in der ersten Zeile vorhanden ist und das Arbeitsblatt korrekt angesprochen wird.
  • Fehler: „Nicht genügend Speicher“

    • Dies kann passieren, wenn das Zielarbeitsblatt zu viele Daten hat. Bereinige das Blatt oder speichere es regelmäßig.
  • Das Makro funktioniert nicht wie erwartet.

    • Überprüfe die Zeile, die die letzte Spalte ermittelt. Achte darauf, dass es keine leeren Zellen in der ersten Zeile gibt, die das Ergebnis beeinflussen könnten.

Alternative Methoden

Eine alternative Methode, um Werte in die nächste freie Spalte zu schreiben, wäre die Verwendung von Excel-Formeln oder Power Query. Diese Methoden sind jedoch weniger flexibel als ein VBA-Makro, wenn du mit dynamischen Daten arbeitest.

  • Power Query: Du kannst Daten importieren und transformieren, jedoch erfordert dies eine andere Herangehensweise und ist nicht immer für alle Aufgaben geeignet.
  • Excel-Formeln: Verwende Formeln wie INDEX oder VERGLEICH, um die nächste freie Zelle zu finden, jedoch ist dies nicht so automatisiert wie ein Makro.

Praktische Beispiele

Angenommen, du hast ein Arbeitsblatt mit Verkaufsdaten, und du möchtest die Spalte für „Verkäufer“ in die nächste freie Spalte in einem anderen Arbeitsblatt einfügen.

  1. Der Suchbegriff könnte „Verkäufer“ sein.
  2. Das Makro kopiert die gesamte Spalte, sobald der Begriff gefunden wurde, und fügt sie in die nächste freie Spalte im Zielarbeitsblatt ein.

Durch die Anpassung des Codes kannst du das Makro für verschiedene Suchbegriffe und Zielarbeitsblätter verwenden.


Tipps für Profis

  • Variablen verwenden: Definiere deine Variablen klar, um die Lesbarkeit des Codes zu erhöhen.
  • Error Handling: Verwende „On Error GoTo“ anstelle von „On Error Resume Next“, um besser auf Fehler reagieren zu können.
  • Modularität: Teile dein Makro in kleinere Unterprozeduren auf, um die Wartung und Wiederverwendbarkeit zu verbessern.
  • Dokumentation: Kommentiere deinen Code, damit du und andere Nutzer die Funktionsweise schnell verstehen.

FAQ: Häufige Fragen

1. Wie finde ich die nächste freie Zeile anstelle der Spalte? Du kannst die Methode End(xlUp) verwenden, um die letzte benutzte Zeile in einer bestimmten Spalte zu finden.

2. Funktioniert das Makro in Excel 365? Ja, das Makro ist mit Excel 365 und anderen Versionen kompatibel, die VBA unterstützen.

3. Was kann ich tun, wenn das Makro nicht reagiert? Überprüfe, ob das Makro in einer Umgebung mit aktiviertem Makro-Support ausgeführt wird, und stelle sicher, dass keine anderen Prozesse das Makro blockieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige