Die Aufgabe
In einer vorgegebenen Zeile soll nach einen definierten Spalte die erste leere Zelle gefunden werden.
Als Beispiel verwende ich hier die Forderung, dass im aktuellen Arbeitsblatt in Zeile 10 die erste freie Spalte nach der Spalte H gefunden werden soll. Der Demonstration wegen gebe ich hier eine MessageBox aus, zusätzlich schreibe ich in die erste freie Zelle der definierten Spalte einen vorgegebenen Wert.
Der Code
Der Code ist so geschrieben, dass er in das Modul des Tabellenblattes eingefügt werden muss, wo das Programm auch ausgeführt werden soll.
Option Explicit Sub FirstFreeCol() Dim rngBereich As Range Dim c As Range Dim intNachSpalte As Integer Dim lngZeile As Long Dim vntWert As Variant Dim strErsteFreieSpalte As String On Error GoTo ErrorHandler lngZeile = 10 ' Anpassen intNachSpalte = 8 ' Anpassen, entspricht Spalte_H vntWert = 123.456  > ' Punkt als Dezimaltrenner! Set rngBereich = Range(Cells(lngZeile, intNachSpalte), _ Cells(lngZeile, Columns.Count)) For Each c In rngBereich If c.Value = "" Or IsEmpty(c) Then Exit For Next c MsgBox "Erste freie Spalte = " & c.Column ' Alternativen für die Spalte als Buchstabe strErsteFreieSpalte = Replace(c.Address(0, 0), "1", "") MsgBox "(1) Erste freie Spalte = " & Chr(34) & " " & _ Left(strErsteFreieSpalte, Len(strErsteFreieSpalte) - 1) ' Oder die 2. Möglichkeit: strErsteFreieSpalte = WorksheetFunction.Substitute(c.Address(0, 0), 1, "") MsgBox "(2) Erste freie Spalte = " & Chr(34) & " " & _ Left(strErsteFreieSpalte, Len(strErsteFreieSpalte) - 1) & " " & Chr(34) Cells(lngZeile, c.Column) = vntWert ErrorHandler: If Err.Number <> 0 Then MsgBox "Fehler Nr. " & Err.Number & vbCrLf _ & Err.Description, vbOKOnly + vbCritical, _ "Fehler, schade…" End If Set rngBereich = Nothing End Sub
Code4Import
Den obigen Code bekommen Sie hier als *.txt oder auch als *.cls zum downloaden. Beide Files sind als *.zip gepackt. Die *.cls wird den Sourcecode automatisch in das Modul der Tabelle1 importieren.
[NachObenLetzte Verweis=„CodeSchnipsel: Erste freie Zelle”]