wie kann ich in VBA ermitteln welche die erste freie Zelle in Spalte B ist unterhalb von B13?
Gruß
Martin
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
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
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)Um die erste freie Zelle in Spalte B unterhalb von B13 mithilfe von VBA zu ermitteln, kannst du folgende Schritte befolgen:
ALT + F11
, um den VBA-Editor zu öffnen.Einfügen
> Modul
.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
F5
drückst oder über das Menü Run
> Run Sub/UserForm
wählst.Fehler: "Keine leere Zelle gefunden"
Fehler: "Laufzeitfehler"
Range("B14")
beginnst.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.
Erste freie Zelle finden:
Anpassung der Range:
Range("C14:C65536")
für Spalte C.Application.ScreenUpdating = False
, um die Ausführung zu beschleunigen, besonders bei großen Datenmengen.Cells
und End(xlUp)
, um deine Lösung noch effektiver zu gestalten.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.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen