Moinmoin an alle fleißigen Foristen hier! :)
Ich bin VBA- und generell Programmieranfänger und stehe gerade vor meinem ersten größeren Projekt sag ich mal, eine Mini-Datenbank in Excel, gerade schreibe ich eine Eingabemaske. Die Eingabemaske besteht aus einer Listbox links, einigen Textfeldern/Comboboxen, und 3 Buttons: "Neuer Eintrag", "Speichern" und "Löschen". Die Listbox besteht aus zwei Spalten, ID & Vermieter, die ID-Spalte ist ausgeblendet, ist nur da um den passenden Datensatz zu finden. Eigentlich funktioniert alles wie von mir gewollt außer der Speichern Button. Er soll Änderungen in den Textboxen in die passenden Zellen im Datensatz eintragen, stattdessen macht er zur Zeit das gleiche wie ein Klick in die Listbox und schreibt den Inhalt der Zellen in die Textboxen, also quasi verkehrt herum. Bin den Code auch schon Schritt für Schritt durchgegangen, alle Schritte davor funktionieren wie gewollt. Hier der code:
Private Sub cmd_VSave_Click()
Dim iRow As Long
If Lst_Vrmtr.ListIndex = -1 Then Exit Sub
If Trim(CStr(txt_VName.Text)) = "" Then
MsgBox "Bitte trage einen Namen ein!", vbCritical + vbOKOnly, "Fehler!"
Exit Sub
End If
iRow = 2
Do While Trim(CStr(WksVrmtr.Cells(iRow, 1).Value)) <> ""
If Lst_Vrmtr.List(Lst_Vrmtr.ListIndex, 0) = Trim(CStr(WksVrmtr.Cells(iRow, 1).Value)) Then
With WksVrmtr
.Cells(iRow, 1).Value = Trim(CStr(txt_VID.Text))
.Cells(iRow, 2).Value = txt_VName.Text
.Cells(iRow, 3).Value = cmb_VAnrede.Text
.Cells(iRow, 4).Value = txt_VHandyA.Text
.Cells(iRow, 5).Value = txt_VHandyB.Text
.Cells(iRow, 6).Value = txt_VFestnetz.Text
.Cells(iRow, 7).Value = txt_VFax.Text
.Cells(iRow, 8).Value = txt_VMail.Text
.Cells(iRow, 9).Value = txt_VHomepage.Text
.Cells(iRow, 10).Value = txt_VAnmerkung.Text
End With
If Lst_Vrmtr.List(Lst_Vrmtr.ListIndex, 1) <> Trim(CStr(txt_VName.Text)) Then
Call UserForm_Initialize
If Lst_Vrmtr.ListCount > 0 Then ListBox1.ListIndex = 0
'End If
Exit Do
End If
iRow = iRow + 1
Loop
End Sub
Mein nächster Ansatz wäre hier irgendwas mit .ControlSource zu bauen, dass quasi einmal kurz die direkte Verknüpfung zur Tabelle gemacht wird um die Daten eintragen zu lassen, und dann die die Verknüpfung wieder zu kappen, damit man wieder in die Textfelder schreiben kann ohne dass es gleich übertragen wird. Habe aber das Gefühl, das ist sehr umständlich und geht irgendwie auch einfacher, übersehe ich gerade irgendwas simples?
Vielen Dank im Vorraus schonmal, ich freue mich auf eure beiträge! :)
|