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

Forumthread: nächste leere Spalte

nächste leere Spalte
23.11.2005 10:07:16
Kathrin
Hallo Zusammen!
Ich bräuchte Eure Hilfe bei einem Makro. Ich habe eigentlich keine Ahnung von VBA und zeichne alles mit dem Recorder auf und änder dann hinter einige Sachen ab. Freie VBA-Programmierung kann ich gar nicht.
Ich möchte gerne, dass Excel per Makro in die erste Zelle der nächsten freien Spalte springt, damit ich dort etwas einfügen kann.
In der Recherche habe ich schon gesucht und auch etwas gefunden. Allerdings kann ich das nicht in mein Makro übertragen. Irgendwas klappt da nicht.
Ich hoffe mir kann jemand helfen.
Viele Grüße
Kathrin
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: nächste leere Spalte
23.11.2005 10:14:04
Rainer
Hallo,

Sub nächste()
Dim a
a = Sheets("Tabelle1").UsedRange.Columns.Count 'zählt die benutzten Spalten
Cells(1, a + 1).Select 'selektiert die erste Zelle der ersten freien Spalte
End Sub

Gruß Rainer
AW: nächste leere Spalte
23.11.2005 10:54:46
Kathrin
Hallo Rainer,
das hat super geklappt, genau wie ich es brauchte.
Kannst Du mir das evt. für die erste Zelle der nächsten freien Zeile auch schreiben.
Vielen Dank
Kathrin
Anzeige
kleine Anmerkung
23.11.2005 11:09:44
Harald
Moin,
...zu den Eigenschaften von Usedrange.
Diesen Code in ein leeres Blatt und z.B in E1 ein "x" schreiben. Code laufen lassen
....auch schön ist, dann noch C1 markieren und lediglich die Schrift auf FETT setzen (nichts eintragen) und den Code erneut starten.

Sub richtigoderwas()
'Möglichkeit A
a = UsedRange.Columns.Count 'zählt die benutzten Spalten
Cells(1, a + 1).Select 'selektiert die erste Zelle der ersten freien Spalte
MsgBox "Richtig ? "
'Möglichkeit B
x = Cells(1, Columns.Count).End(xlToLeft).Column + 1
Cells(1, x).Select
MsgBox "Jetzt besser ?"
End Sub

Gruss Harald
Anzeige
AW: kleine Anmerkung
23.11.2005 11:43:06
Kathrin
Hallo Harald,
das klappt bei mir nicht.
Ich bekomme sofort bei:
a = UsedRange.Columns.Count 'zählt die benutzten Spalten
eine Fehlermeldung.
Gruß
Kathrin
AW: kleine Anmerkung
23.11.2005 12:12:03
Harald
Jau...ich Nase. Den Oberlehrer spielen wollen..
und die Variablendeklaration vergessen.
So solltest Du erkennen, wo Usedrange u.a. Grenzen hat.

Sub richtigoderwas()
Dim a As Integer, x As Integer
'Möglichkeit A
a = UsedRange.Columns.Count 'zählt die benutzten Spalten
Cells(1, a + 1).Select 'selektiert die erste Zelle der ersten freien Spalte
MsgBox "Richtig ? "
'Möglichkeit B
x = Cells(1, Columns.Count).End(xlToLeft).Column + 1
Cells(1, x).Select
MsgBox "Jetzt besser ?"
End Sub

Gruss Harald
Anzeige
AW: kleine Anmerkung
23.11.2005 13:41:07
Kathrin
Sorry, aber klappt immer noch nicht.
Ich bekomme weiterhin eine Fehlermeldung bei:
a = UsedRange.Columns.Count 'zählt die benutzten Spalten
Vielleicht bin ich aber auch einfal zu dämlich es anzwenden.
Hilft mir denn dieses Makro dabei, dass Excel in die erste Zelle der nächsten freien Zeile springt?
Du musst wissen ich habe so gut wie keine Ahnung von VBA.
Gruß
Kathrin
Anzeige
AW: kleine Anmerkung
23.11.2005 14:03:52
Harald
Hmm...Blattschutz ?
Bei mir läuft der Code fehelrfrei durch.
Wie auch immer. Hier ein Erklärungsversuch.
UsedRange nimmt den benutzen Bereich, hast du in nur in E1 was stehen, ist usedrange 1
zählst du da eine Spalte dazu, markiert er dir Spalte B
Usedrange nimmt zudem auch Zellen, in denen z.B. eine Formatierung steht, auch wenn die Zelle ansonsten leer ist.
x = Cells(1, Columns.Count).End(xlToLeft).Column
zählt von rechts nach links, bis er eine gefüllte Zelle findet. Wäre in dem Fall
richtigerweise 5 ( also E). + 1 ergibt dann F und ist die erste freie Zelle
Also nutze

Sub test()
Dim x As Integer
x = Cells(1, Columns.Count).End(xlToLeft).Column + 1
Cells(1, x).Select
End Sub

Achtung: In diesem Fall zählt er das in der ersten Zeile. Um in einer anderen Zeile zu suchen und zu markieren, mußt Du die 1 bei den beiden cells(1, ...) Angaben gegen die gewünschte Zeilennummer tauschen.
Gruss Harald
Anzeige
AW: kleine Anmerkung
23.11.2005 15:35:16
Kathrin
Vielen Dank, das Marko funktioniert! Verstanden habe ich es glaub ich auch einigermaßen.
Damit bleibt mir eine Menge Arbeit erspart!
Viele Grüße
Kathrin
Danke für die Rückmeldung owT
23.11.2005 17:49:39
Harald
An Harald
23.11.2005 18:21:34
Rainer
Hallo Harald,
Deine Lösung ist besser.
Bei mir kommt auch die Fehlermeldung bei Deinem Beispiel.
Lässt sich bei mir beheben, wenn statt:
a = UsedRange.Columns.Count
so geschrieben wird:
a = Sheets("Tabelle1").UsedRange.Columns.Count
Aber das nur nebenbei :-)
Gruß Rainer
Anzeige
AW: An Harald
24.11.2005 13:26:15
Harald
Hängt immer davon ab, in welchem Modul der Code steht.
...und meine Lösung ist auch nur besser, wenn in dieser bestimmten Zeile der letzte Wert steht. Steht er in einer anderen Zeile, gehts in die Buxn. ;-))
Gruss Harald
AW: nächste leere Spalte
23.11.2005 10:15:49
Harald
Moin Kathrin,
die letzte benutze Spalte in z.B Zeile 2 bekommst du so.
x = Cells(2, Columns.Count).End(xlToLeft).Column '2 steht für Zeile 2
die erste freie bekommst du so
x = Cells(2, Columns.Count).End(xlToLeft).Column + 1
cells(2, x)= "Hallo"
Gruss Harald
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

Nächste leere Spalte in Excel finden und nutzen


Schritt-für-Schritt-Anleitung

Um die nächste leere Zelle in einer Spalte mithilfe von VBA zu finden, kannst du den folgenden Code verwenden. Dieser springt zu der ersten Zelle der nächsten leeren Spalte:

Sub nächste()
    Dim a As Integer
    a = Sheets("Tabelle1").UsedRange.Columns.Count ' zählt die benutzten Spalten
    Cells(1, a + 1).Select ' selektiert die erste Zelle der ersten freien Spalte
End Sub

Falls du die erste leere Zelle in einer bestimmten Zeile finden möchtest, kannst du den Code entsprechend anpassen:

Sub nächsteLeereZeile()
    Dim x As Integer
    x = Cells(2, Columns.Count).End(xlToLeft).Column + 1 ' sucht in Zeile 2
    Cells(2, x).Select ' selektiert die erste Zelle der nächsten freien Zeile
End Sub

Häufige Fehler und Lösungen

Ein häufiger Fehler, den viele Anwender erleben, ist eine Fehlermeldung bei der Zeile:

a = UsedRange.Columns.Count

Dieser Fehler kann auftreten, wenn der Blattschutz aktiv ist oder wenn der Code in einem falschen Modul steht. Um diesen zu beheben:

  • Stelle sicher, dass der Blattschutz deaktiviert ist.
  • Verwende den vollständigen Referenznamen der Tabelle, z.B.:
a = Sheets("Tabelle1").UsedRange.Columns.Count

Wenn du weiterhin Probleme hast, überprüfe auch, ob die Zelle, in die du schreiben möchtest, tatsächlich leer ist.


Alternative Methoden

Falls du keine VBA-Makros verwenden möchtest, kannst du auch die Funktion SVERWEIS oder INDEX kombinieren mit VERGLEICH, um die nächste leere Zelle zu finden. Dies ist zwar nicht so flexibel wie VBA, kann aber in einfachen Anwendungen nützlich sein.

Ein Beispiel für die Verwendung von SVERWEIS könnte so aussehen:

=SVERWEIS("*";A:A;1;FALSCH)

Diese Formel sucht nach dem letzten Eintrag in der Spalte A und gibt dir die Position zurück.


Praktische Beispiele

Hier sind einige praktische Beispiele, die dir helfen, die nächste leere Zelle oder Spalte zu finden:

  1. Nächste leere Zelle in Spalte A finden:
Sub nächsteLeereZelle()
    Dim r As Range
    Set r = Range("A1").End(xlDown).Offset(1, 0) ' springt zur nächsten leeren Zelle in Spalte A
    r.Select
End Sub
  1. Leere Spalte einfügen:

Wenn du eine neue leere Spalte einfügen möchtest, kannst du den folgenden Code verwenden:

Sub leereSpalteEinfügen()
    Dim a As Integer
    a = Sheets("Tabelle1").UsedRange.Columns.Count
    Columns(a + 1).Insert Shift:=xlToRight ' fügt eine leere Spalte ein
End Sub

Tipps für Profis

  • Nutze die Option Explicit-Anweisung, um sicherzustellen, dass alle Variablen deklariert sind. Das hilft, Fehler zu vermeiden.
  • Lerne, wie du den With...End With Block verwendest, um deinen Code effizienter und lesbarer zu gestalten.
  • Experimentiere mit dem Makro-Recorder, um ein besseres Verständnis für VBA zu entwickeln.

FAQ: Häufige Fragen

1. Wie finde ich die nächste leere Zeile in einer bestimmten Spalte? Du kannst den Code anpassen, um die nächste leere Zeile in einer bestimmten Spalte zu finden, indem du die Zeilennummer und die Spaltennummer entsprechend änderst.

2. Was ist der Unterschied zwischen UsedRange und End(xlToLeft)? UsedRange bezieht sich auf den gesamten benutzten Bereich eines Arbeitsblatts, während End(xlToLeft) von der letzten Zelle in einer Zeile nach links sucht, um die letzte gefüllte Zelle zu finden.

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