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

Erste freie Zelle ab einer bestimmten Zelle

Forumthread: Erste freie Zelle ab einer bestimmten Zelle

Erste freie Zelle ab einer bestimmten Zelle
Mister
Hallo Excelgemeinde,
wie kann ich in VBA ermitteln welche die erste freie Zelle in Spalte B ist unterhalb von B13?
Gruß
Martin
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Erste freie Zelle ab einer bestimmten Zelle
05.11.2011 16:02:38
Reinhard
Hallo Martin,
vielleicht so:
MsgBox Application.Max(13, Cells(Rows.Count, 2).End(xlUp).Row) + 1
Gruß
Reinhard
Einspruch !
05.11.2011 17:56:01
Matthias
Hallo Reinhard
schreib mal in die Zellen
B14 und B16 je einen Wert
dann wäre B15 die erste freie Zelle unter B13
MsgBox Application.Max(13, Cells(Rows.Count, 2).End(xlUp).Row) + 1 liefert aber 17 !
Oder es ist ab XL2010 anders ;o)
Gruß Matthias
Anzeige
Abgelehnt :-)
05.11.2011 19:18:13
Reinhard
Hallo Matthias,
ich bin da konsequent wie z.B. der Autofilter in Excel.
Leerzellen in einer Spalte führen gnadenlos zu Fehlern u.ä. *grins*
Die Lösung von Sepp verstehe ich, naja, wär vielleicht nicht darauf gekommen, obwohl ich
schon beim Posten meiner Lösung Gedanken an die Leerzellenproblematik hatte.
Ma so von Hobbyist zu Hobbyist, was hat 65536 in 2010 noch zu suchen? *gg*
Gruß
Reinhard
Anzeige
Ablehnung abgelehnt ;o) ... owT
05.11.2011 19:22:02
Matthias
Ablehnung³ *gg*
06.11.2011 16:50:12
Reinhard
Hallo Matthias,
ich gehe jetzt auf deine Frechheit meine Ablehnung abzulehnen nicht näher ein, bin ja generös und konzilliant :-))
Lassen wir so Peanuts, hier schlummern die wahren Excelprobleme:
https://www.herber.de/forum/messages/1236743.html
Neben anderem ist mir völlig schleierhaft warum eine Checkbox aus Formular die ich positioniere
durch
W=10
.left=Range("D2").left - W
schon in C2 erscheint aber noch beträchtlich nach D2 rüberragt.
Ist da Left einer Zelle und left einer Checkbox unterschiedlich?
Wenn ich W auf 25 setze dann klappt es. ? Warum?
Hier nochmal die Mappe mit abgeändertem Code der nachstehend steht.
https://www.herber.de/bbs/user/77380.xlsm
Und, warum ist es egal ob ich Placement auf xlMove oder xlMoveandSize setze, wird dann immer nur xlMove daraus :-(
Danke ^ Gruß
Reinhard
Sub CBErzeugen()
Dim Zei As Long, CB As Object, L As Single, T As Single
Dim W As Single, H As Single
Const Anzahl As Integer = 200
Application.ScreenUpdating = False
With Worksheets("Projekte")
For Each CB In .Shapes
If CB.Name Like "Check*" Then CB.Delete
Next CB
.Range("C2:C2000").ClearContents
.Range("C2:C" & Anzahl + 1).Value = "nicht bearbeitet"
For Zei = 2 To Anzahl + 1
H = .Cells(Zei, 3).Height
W = 25
L = .Cells(Zei, 4).Left - W
T = .Cells(Zei, 3).Top
Set CB = .CheckBoxes.Add(L, T, W, H)
With CB
.Name = "Check" & Zei - 1
.Caption = ""
.Placement = xlMove ' xlFreeFloating , xlMoveAndSize(wird zu xlMove?)
.OnAction = "Status"
End With
Next Zei
End With
Application.ScreenUpdating = True
End Sub

Sub Status()
With Worksheets("Projekte").Shapes(Application.Caller).TopLeftCell
.Value = IIf(.Value = "bearbeitet", "nicht bearbeitet", "bearbeitet")
End With
End Sub

Anzeige
AW: Erste freie Zelle ab einer bestimmten Zelle
05.11.2011 18:10:52
Josef

Hallo Martin,
Matthias hat recht, die erste freie Zelle kannst du z. B. so ermitteln.
Sub Test()
  Dim lngNextFree As Long
  
  On Error Resume Next
  lngNextFree = Range("B14").Resize(Rows.Count - 13, 1).SpecialCells(xlCellTypeBlanks).Cells(1, 1).Row
  On Error GoTo 0
  
  MsgBox lngNextFree
End Sub



« Gruß Sepp »

Anzeige
Wirklich erste leere Zelle in Spalte ab B13
05.11.2011 18:35:43
Matthias
Hallo
Ich war natürlich nicht untätig, Sepp
Meine Lösung hätte jetzt so ausgesehen, langsamer aber eben auch funktional ;o)
Option Explicit
Sub MyEach()
Dim rng As Range
For Each rng In Range("B14:B65536")
If IsEmpty(rng) Then MsgBox "erste freie Zelle in B = B" & rng.Row: Exit Sub
Next
MsgBox "keine leere Zelle gefunden"
End Sub
Das ist eben der Unterschied zwischen dem Profi (Sepp)
und einem kleinen Hobbyprogrammierer (Matthias L)
Aber in meinem Kopf ist das jetzt drin :)
Gruß und Danke für den Input
Matthias
Anzeige
Einspruch! bin KEIN Profi! o.T.
05.11.2011 19:55:47
Josef
« Gruß Sepp »

;
Anzeige
Anzeige

Infobox / Tutorial

Erste freie Zelle ab einer bestimmten Zelle finden in Excel


Schritt-für-Schritt-Anleitung

Um die erste freie Zelle in Spalte B unterhalb von B13 mithilfe von VBA zu ermitteln, kannst du folgende Schritte befolgen:

  1. Öffne die Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Einfügen eines neuen Moduls:
    • Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)".
    • Wähle Einfügen > Modul.
  3. Füge den folgenden Code ein, um die erste leere Zelle zu finden:
    Sub Test()
       Dim lngNextFree As Long
       On Error Resume Next
       lngNextFree = Range("B14").Resize(Rows.Count - 13, 1).SpecialCells(xlCellTypeBlanks).Cells(1, 1).Row
       On Error GoTo 0
       MsgBox lngNextFree
    End Sub
  4. Führe das Skript aus, indem du im VBA-Editor F5 drückst oder über das Menü Run > Run Sub/UserForm wählst.

Häufige Fehler und Lösungen

  • Fehler: "Keine leere Zelle gefunden"

    • Lösung: Stelle sicher, dass es tatsächlich leere Zellen ab B14 gibt. Wenn alle Zellen belegt sind, wird der Code keine leere Zelle finden.
  • Fehler: "Laufzeitfehler"

    • Lösung: Überprüfe, ob du die richtige Range ausgewählt hast. Es kann vorkommen, dass die Range nicht korrekt definiert wurde. Achte darauf, dass du mit Range("B14") beginnst.

Alternative Methoden

Eine alternative Methode zur Ermittlung der ersten freien Zelle könnte die Verwendung einer Schleife sein. Hier ein Beispiel:

Sub MyEach()
    Dim rng As Range
    For Each rng In Range("B14:B65536")
        If IsEmpty(rng) Then
            MsgBox "erste freie Zelle in B = B" & rng.Row
            Exit Sub
        End If
    Next
    MsgBox "keine leere Zelle gefunden"
End Sub

Diese Methode überprüft jede Zelle in dem angegebenen Bereich und gibt die erste leere Zelle aus.


Praktische Beispiele

  1. Erste freie Zelle finden:

    • Angenommen, in den Zellen B14 und B16 stehen Werte, dann gibt der oben genannte Code B15 als erste freie Zelle aus.
  2. Anpassung der Range:

    • Du kannst die Range anpassen, um andere Spalten oder Zeilen zu überprüfen, z.B. Range("C14:C65536") für Spalte C.

Tipps für Profis

  • Nutze Application.ScreenUpdating = False, um die Ausführung zu beschleunigen, besonders bei großen Datenmengen.
  • Wenn du häufig mit leeren Zellen arbeitest, überlege, wie du diese Daten strukturieren kannst, um die Performance zu verbessern.
  • Experimentiere mit verschiedenen VBA-Funktionen wie Cells und End(xlUp), um deine Lösung noch effektiver zu gestalten.

FAQ: Häufige Fragen

1. Wie kann ich die erste freie Zelle in einer anderen Spalte finden?
Ändere einfach die Range in deinem VBA-Code, z.B. Range("C14").Resize(Rows.Count - 13, 1) für Spalte C.

2. Gibt es eine Möglichkeit, die erste leere Zelle ohne VBA zu finden?
Ja, du kannst die Funktion =VERGLEICH("" ;B14:B100 ;0) verwenden, um die Position der ersten leeren Zelle zu finden, jedoch ist dies weniger flexibel als VBA.

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