Frage von maxwell11, 195

Excel: VBA - Zellen per Button-Klick nacheinander füllen?

Schönen guten Tag,

Ich würde gern in einer Excel-Tabelle eine Spalte nacheinandern (begrenzter Bereich), bei Button-Klick, füllen.

Es sollen auf einer Excel-Oberfläche verschiedene Buttons erstellt werden, die alle die selben Zellen füllen (Bsp: G3 bis O3). Wenn eine Zeile leer ist, soll diese gefüllt werden, wenn die nächste gefüllt ist, soll zur nächsten "leeren" gegangen werden. Dies jedoch nicht sofort für alle, sondern per Mausklick auf einen Button. ButtonA füllt G3 mit "asdf", ButtonB beginnt bei G3 findet dort "nicht leer" und geht auf H3 und schreibt "wasd", erneut ButtonA beginnt bei G3, findet G3 "nicht leer" und H3 "nicht leer" und schreibt in I3 "asdf".

Ich hoffe mein Idee und mein Ansatz ist verschändlich.

Ich habe auch eine Möglichkeit gefunden, jedoch müsste ich den Code für jede weitere Variante anpassen. Kann man daraus eine "einfachere" Schleife generieren? Bin leider noch VBA-Neuling.

Ich danke für die Hilfe! Ich wünsche euch einen schönen Tag!

Grüße

Private Sub CommandButton1_Click()
If Range("G3") = "" Then
    Range("G3").Value = "Test - 1"
Else
    If Range("H3") = "" Then
        Range("H3").Value = "Test - 1"
    Else
        If Range("I3") = "" Then
            Range("I3").Value = "Test - 1"
        Else
            If Range("J3") = "" Then
                Range("J3").Value = "Test - 1"
            Else
                If Range("K3") = "" Then
                    Range("K3").Value = "Test - 1"
                Else
                    If Range("L3") = "" Then
                        Range("L3").Value = "Test - 1"
                    Else
                        If Range("M3") = "" Then
                            Range("M3").Value = "Test - 1"
                        End If
                    End If
                End If
            End If
        End If
    End If
End If

End Sub

Expertenantwort
von Ninombre, Community-Experte für Excel, 163

Geht es immer nur um die eine Zeile oder muss man irgendwann auch die letzte benutzte Zeile ermitteln?

Da Du von verschiedenen Button sprichst, die unterschiedlichen Text erzeugen, würde ich einen Ablauf machen, um die leere Zelle zu ermitteln und den gewünschten Inhalt einzutragen und je Button einen Einzeiler, der diesen Ablauf mit dem gewünschten Text aufruft. 

Die Namen der Sub kannst Du beliebig ändern, ich drück bei Beispielen einfach irgendwo auf die Tastatur, deshalb ist das jetzt tt.
"Inhalt" ist der Parameter mit dem Text, der je Button unterschiedlich übergeben werden kann.

Sub tt(inhalt As String)
For i = 7 To 15 'das sind die Spalten 7=G
If Cells(3, i).Value = "" Then
Cells(3, i).Value = inhalt
Exit Sub
End If
Next

End Sub

Sub knopf1()
Call tt("abc")
End Sub

Sub knopf2()
Call tt("123")
End Sub

Der erste Button wird also mit sub knopf1 verbunden und übergibt den Text abc. Gleiches dann für den zweiten Button mit sub knopf 2. Das lässt sich entsprechend erweitern.

Expertenantwort
von Suboptimierer, Community-Experte für Excel, 132

Die nächste, freie Zelle kannst du mittels 

Range("G100000").End(xlUp).Offset(1, 0).Value = "Test - 1"

finden und befüllen.

Keine passende Antwort gefunden?

Fragen Sie die Community