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
2 Antworten
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.
Die nächste, freie Zelle kannst du mittels
Range("G100000").End(xlUp).Offset(1, 0).Value = "Test - 1"
finden und befüllen.