Moin,
Dann will ich mal eine kleine Taschenlampe mit dazulegen ;-), um evtl. etwas Licht ins Dunkel zu bringen.
Du wolltest fortlaufend in Spalte D eintragen.
In
.Range("D?").Value =
suchst Du also das ?.
Als erstes muss das ? also einmal abgetrennt werden um einzeln interpretiert werden zu koennen.
=>
.Range("D" & ?).Value =
Fuer das ? steht nun in #1 also:
IIf(IsEmpty(.Range("D1")), 1, _
IIf(IsEmpty(.Range("D" & .Rows.Count)), _
.Range("D" & .Rows.Count).End(xlUp).Row + 1, _
.Rows.Count)))
Als PseudoFormel:
Wenn(D1=LEER;1;
Wenn("LetzteZelleInD"=LEER;
Zeile("VonLetzterZelleInD" StrgPfeilnachOben)+1;
Zeile("LetzteZelleInD")
Nachteil der Sache: Ist die LetzteZelleInD bereits beschrieben/befuellt, wird diese Zelle immer und immer wieder ueberschrieben. Aber der Code laeuft wenigstens nicht in einen Fehler. (Liesse sich bei Bedarf aber auch abfangen.)
Fuer zukuenftigen Gebrauch leichter anzupassen (wenn eine andere Spalte herhalten muss) waere dann evtl. folgende Version:
Const strSpalte As String = "D"
With Worksheets("Tabelle1")
.Range(strSpalte & IIf(IsEmpty(.Range(strSpalte & 1)), 1, _
IIf(IsEmpty(.Range(strSpalte & .Rows.Count)), _
.Range(strSpalte & .Rows.Count).End(xlUp).Row + 1, _
.Rows.Count))) _
.Value = Me.ComboBox1.Value
End With
Somit waere fuer eine andere Spalte der Konstanten nur ein anderer Buchstabe zuzuweisen.
Cu
TheBlackBird ®
... der hofft, Dich nicht noch mehr verwirrt zu haben ;-)