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

Forumthread: erste freie Zelle in einem bestimmten bereich

erste freie Zelle in einem bestimmten bereich
02.01.2014 12:55:49
Marc
Hallo zsm,
ich möchte gern in einem bestimmten Bereich Zellen über 3 Textboxen und einer Checkbox füllen lassen. Der bereich der gefüllt werden soll ist f6:bc9. Es soll quasi nur in diesem bereich die erste leere Zeile gefunden werden. Was muss ich ändern damit nur in diesem Bereich danach gesucht wird?
Code bisher:
Private Sub CommandButton1_Click()
Dim WkSh As Worksheet
Dim endzeile As Long
Set WkSh = Worksheets("Tabelle1") 'Zuordnung der Adressen-Tabelle
endzeile = WkSh.UsedRange.Columns.Count ' findet die letzte verwendete Zelle.
' Leerzellen dawzischen werden nicht berücksichtigt.
WkSh.Cells(6, endzeile + 1) = TextBox1
WkSh.Cells(7, endzeile + 1) = TextBox2
WkSh.Cells(8, endzeile + 1) = TextBox3
WkSh.Cells(9, endzeile + 1) = CheckBox1
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
CheckBox1 = False
End Sub
Danke und grüß

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: erste freie Zelle in einem bestimmten bereich
02.01.2014 13:20:17
JoWE
Hallo Marc,
so findest Du die Adresse der ersten freien Zelle der aktiven Tabelle im 'UsedRange':
Sub erste_leere_Zelle_in_bereich()
With Worksheets(1).UsedRange
Set c = .Find("", LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
MsgBox _
"Bezug: " & vbTab & c.Address & vbCr & _
"Zeile: " & vbTab & c.Row & vbCr & _
"Spalte: " & vbTab & c.Column
Exit Sub
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address  firstAddress
End If
End With
End Sub

Gruß
Jochen

Anzeige
AW: erste freie Zelle in einem bestimmten bereich
02.01.2014 13:38:09
Marc
Ich glaube ich habe mich etwas undeutlich ausgedrückt :). Ich wollte keine Msgbox als ausgabe.
Hab ich mal die Dummydatei hochgeladen. Es geht um die Userform2, die Werte aus diesen Textboxen sollen in die "Tabelle" also dem Bereich f6:bc9 eingetragen werden.
https://www.herber.de/bbs/user/88658.xlsm
nicht wundern da funktioniert noch einiges nicht :D

Anzeige
AW: erste freie Zelle in einem bestimmten bereich
03.01.2014 09:39:28
Marc
ich bräuche noch hilfe

AW: erste freie Zelle in einem bestimmten bereich
03.01.2014 13:18:45
fcs
Hallo Marc,
in VBA-Code sollte man nicht unnötiger Weise verwirrende Variablenname verwenden. "endzeile" passt hier nicht besonders gut.
Die Suche nach der 1. leere Zelle im Bereich B6:BC6 kann unter VBA wie folgt aussehen:
Private Sub CommandButton1_Click()
Dim WkSh As Worksheet, rngFind As Range
Dim SpalteLeer As Long
Set WkSh = Worksheets("Tabelle1") 'Zuordnung der Adressen-Tabelle
With WkSh
Set rngFind = .Range("B6:BC6").Find(What:="", after:=.Range("BC6"), LookIn:=xlValues, _
lookat:=xlWhole, searchdirection:=xlNext)
If rngFind Is Nothing Then
MsgBox "Keine leeren Zellen im Bereich ""B6:BC6""", , "Suchen Leere Zelle"
Exit Sub
Else
SpalteLeer = rngFind.Column
'MsgBox "Freie Zelle: " & rngFind.Address 'Testzeile
End If
End With
WkSh.Cells(6, SpalteLeer) = TextBox1
WkSh.Cells(7, SpalteLeer) = TextBox2
WkSh.Cells(8, SpalteLeer) = TextBox3
WkSh.Cells(9, SpalteLeer) = CheckBox1
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
CheckBox1 = False
End Sub

Anzeige
AW: erste freie Zelle in einem bestimmten bereich
03.01.2014 13:27:12
hary
Moin
hab es so aehnlich wie Franz.
Private Sub CommandButton1_Click()
Dim WkSh As Worksheet
Dim zelle As Range
Set WkSh = Worksheets("Tabelle1") 'Zuordnung der Adressen-Tabelle
Set zelle = WkSh.Range("F6:BC6").Find(What:="", LookIn:=xlValues, lookat:=xlWhole)
If Not zelle Is Nothing Then
WkSh.Cells(7, zelle.Column) = TextBox1
WkSh.Cells(6, zelle.Column) = TextBox2
WkSh.Cells(8, zelle.Column) = TextBox3
WkSh.Cells(9, zelle.Column) = IIf(CheckBox1, "ja", "")
Else
MsgBox "nix mehr frei", vbInformation, "Hinweis"
End If
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
CheckBox1 = False
End Sub

gruss hary

Anzeige
AW: erste freie Zelle in einem bestimmten bereich
02.01.2014 13:20:42
hary
Moin Marc
Moechtest du hintereinander schreiben, also immer nacheinder eintragen?
Sub letzteFreie()
Dim letzte As Long
letzte = Cells(6, Columns.Count).End(xlToLeft).Column + 1
If letzte 

oder sind die Freien verteilt?
Sub naechsteFreie()
Dim zelle As Range
Set zelle = Range("F6:BC6").Find(What:="", LookIn:=xlValues, lookat:=xlWhole)
If Not zelle Is Nothing Then
MsgBox zelle.Column
End If
End Sub

gruss hary

Anzeige
AW: erste freie Zelle in einem bestimmten bereich
02.01.2014 13:32:16
JoWE
Hallo Marc nochmal:
oder vllt. so?
die Adresse der ersten Zelle der ersten freien Zeile:
activesheet.cells(activesheet.UsedRange.SpecialCells(xlCellTypeLastCell).row+1,1).address
oder die Zeilennummer der ersten Zelle der ersten freien Zeile:
activesheet.cells(activesheet.UsedRange.SpecialCells(xlCellTypeLastCell).row+1,1).row

Anzeige
AW: erste freie Zelle in einem bestimmten bereich
03.01.2014 23:03:37
Marc
Also vielen Dank für eure Hilfe, läuft wie ich es mir vorgestellt habe.
Ihr seid echt Klasse hier!
Frohes neues noch!!
gruß
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Erste freie Zelle in einem bestimmten Bereich finden


Schritt-für-Schritt-Anleitung

Um die erste freie Zelle in einem bestimmten Bereich, z.B. F6:BC9, zu finden und mit Werten aus Textboxen zu füllen, kannst Du den folgenden VBA-Code verwenden. Dieser Code sucht nur innerhalb des definierten Bereichs und trägt die Werte in die erste freie Zeile ein.

Private Sub CommandButton1_Click()
    Dim WkSh As Worksheet
    Dim rngFind As Range
    Dim SpalteLeer As Long

    Set WkSh = Worksheets("Tabelle1") ' Zuordnung der Adressen-Tabelle
    With WkSh
        Set rngFind = .Range("F6:BC9").Find(What:="", LookIn:=xlValues, LookAt:=xlWhole)
        If rngFind Is Nothing Then
            MsgBox "Keine leeren Zellen im Bereich ""F6:BC9""", , "Suchen Leere Zelle"
            Exit Sub
        Else
            SpalteLeer = rngFind.Column
        End If
    End With

    ' Werte aus Textboxen in die gefundene freie Zelle eintragen
    WkSh.Cells(rngFind.Row, SpalteLeer) = TextBox1
    WkSh.Cells(rngFind.Row + 1, SpalteLeer) = TextBox2
    WkSh.Cells(rngFind.Row + 2, SpalteLeer) = TextBox3
    WkSh.Cells(rngFind.Row + 3, SpalteLeer) = IIf(CheckBox1, "ja", "")

    ' Textboxen zurücksetzen
    TextBox1 = ""
    TextBox2 = ""
    TextBox3 = ""
    CheckBox1 = False
End Sub

Häufige Fehler und Lösungen

  • Fehler: "Keine leeren Zellen im Bereich 'F6:BC9'"

    • Lösung: Stelle sicher, dass im Bereich tatsächlich leere Zellen vorhanden sind. Überprüfe, ob der Suchbereich korrekt definiert ist.
  • Fehler: Textboxen geben keine Werte aus.

    • Lösung: Achte darauf, dass die Textboxen korrekt im UserForm platziert sind und die Namen der Textboxen im Code mit den tatsächlichen Namen übereinstimmen.

Alternative Methoden

Eine andere Möglichkeit, die erste freie Zelle in einer Spalte zu finden, besteht darin, die End-Methode zu verwenden:

Dim letzte As Long
letzte = WkSh.Cells(WkSh.Rows.Count, SpalteLeer).End(xlUp).Row + 1

Diese Methode ermittelt die letzte benutzte Zeile in der angegebenen Spalte und fügt dann 1 hinzu, um die erste freie Zeile zu bestimmen.


Praktische Beispiele

Hier ist ein Beispiel, wie Du den Code anpassen kannst, um die erste freie Zeile in einer bestimmten Spalte zu finden:

Private Sub CommandButton1_Click()
    Dim WkSh As Worksheet
    Dim ersteFreieZeile As Long

    Set WkSh = Worksheets("Tabelle1")
    ersteFreieZeile = WkSh.Cells(WkSh.Rows.Count, "F").End(xlUp).Row + 1

    WkSh.Cells(ersteFreieZeile, "F") = TextBox1
    ' Weitere Textboxen ähnlich hinzufügen
End Sub

Mit diesem Ansatz kannst Du gezielt die erste freie Zeile in einer bestimmten Spalte finden.


Tipps für Profis

  • Nutze die Find-Methode für größere Datenmengen, um die Leistung zu optimieren.
  • Vermeide verwirrende Variablennamen; benutze stattdessen klare Bezeichnungen wie ersteFreieZelle.
  • Setze Fehlerbehandlungen ein, um zu verhindern, dass das Makro bei einem Fehler stoppt.

FAQ: Häufige Fragen

1. Wie finde ich die erste freie Zeile in einer bestimmten Spalte? Du kannst die End-Methode verwenden, um die letzte benutzte Zeile zu finden und dann die nächste Zeile zu verwenden.

2. Kann ich die Suche auf mehrere Bereiche ausweiten? Ja, Du kannst die Find-Methode für mehrere Bereiche anpassen, indem Du diese in einer Schleife durchgehst.

3. Funktioniert das auch in Excel Online? Leider sind VBA-Makros nicht in Excel Online verfügbar. Du kannst jedoch ähnliche Funktionen mit Office Scripts umsetzen.

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