Hallo Community,
ich habe folgendes Problem.
In Userform sind mehrere Textboxen eingefügt, in welche Daten eingegeben werden. Diese Daten werden dann in einer Tabelle eingefügt
und in einer Listbox wird immer ein Eintrag deutlich anhand einer vorher bestimmten Textbox.
Wenn man nun in der Listbox einen Eintrag auswählt, werden die zugehörigen Daten in die Textfelder geladen.
Dies geschieht alles anhand von einem Kriterium, welcher auch in der Listbox angezeigt wird. Das Problem ist, dass sobald dieses
Krtierium genau 2x auftritt, sich die zweite Textbox nicht mehr läd, da es das erste gefunden Kriterium wählt und reinläd.
Wie kann ich die Suche und Ausfüllen anhand von 2 Kriterien einbinden?
Ein weiterer Punkt wäre, dass bei der Eingabe von Textfelder auch eine Checkbox abgehackt werden kann.
Dazu möchte ich, das wenn die Checkbox betätigt wird, einfach ein "JA" bzw. "NEin" in die jeweilige zugehörige Zeile mit eingtragen wird.
Wie kann ich dies umsetzen.
Hier der Auszug vom Quelltext.
Vielen Dank für Eure Hilfe
ich habe folgendes Problem.
In Userform sind mehrere Textboxen eingefügt, in welche Daten eingegeben werden. Diese Daten werden dann in einer Tabelle eingefügt
und in einer Listbox wird immer ein Eintrag deutlich anhand einer vorher bestimmten Textbox.
Wenn man nun in der Listbox einen Eintrag auswählt, werden die zugehörigen Daten in die Textfelder geladen.
Dies geschieht alles anhand von einem Kriterium, welcher auch in der Listbox angezeigt wird. Das Problem ist, dass sobald dieses
Krtierium genau 2x auftritt, sich die zweite Textbox nicht mehr läd, da es das erste gefunden Kriterium wählt und reinläd.
Wie kann ich die Suche und Ausfüllen anhand von 2 Kriterien einbinden?
Ein weiterer Punkt wäre, dass bei der Eingabe von Textfelder auch eine Checkbox abgehackt werden kann.
Dazu möchte ich, das wenn die Checkbox betätigt wird, einfach ein "JA" bzw. "NEin" in die jeweilige zugehörige Zeile mit eingtragen wird.
Wie kann ich dies umsetzen.
Hier der Auszug vom Quelltext.
Vielen Dank für Eure Hilfe
Visual Basic-Quellcode
- 'Neuer Eintrag Schaltfläche Ereignisroutine
- Private Sub NeuerArtikel3_Click()
- Dim lZeile As Long
- 'neuen Eintrag erzeugen
- 'erstellen eines neuen Eintrags in der ListBox und markieren
- lZeile = 3 'Start in Zeile 3
- 'Schleife solange etwas in der ersten Spalte in Tabelle 1 drin steht
- Do While Trim(CStr(Tabelle3.Cells(lZeile, 1).Value)) <> ""
- lZeile = lZeile + 1 'Nächste Zeile bearbeiten
- Loop
- Tabelle3.Cells(lZeile, 1) = CStr("Neuer Eintrag Zeile " & lZeile)
- 'Und neuen Eintrag in die UserForm eintragen
- ListBox3.AddItem CStr("Neuer Eintrag Zeile " & lZeile)
- 'Den neuen Eintrag markieren mit Hilfe des ListIndexes
- ListBox3.ListIndex = ListBox3.ListCount - 1
- 'Durch das Click Ereignis der ListBox werden die Daten automatisch geladen
- End Sub
- 'Speichern Schaltfläche Ereignisroutine
- Private Sub Speichern3_Click()
- Dim lZeile As Long
- 'Ausbauoption: Prüfen, ob die ID in Tabelle1 Spalte 1 schon vorhanden ist!
- lZeile = 3 'Start in Zeile 3
- 'Schleife solange etwas in der ersten Spalte in Tabelle 1 drin steht
- Do While Trim(CStr(Tabelle3.Cells(lZeile, 1).Value)) <> ""
- 'Datensatz ID Spalte mit selektiertem Eintrag der ListBox vergleichen
- If ListBox3.Text = Trim(CStr(Tabelle3.Cells(lZeile, 1).Value)) Then
- 'Eintrag gefunden, TextBoxen in die Zellen schreiben
- Tabelle3.Cells(lZeile, 2).Value = Holzart3.Text
- Tabelle3.Cells(lZeile, 3).Value = Trim(CStr(Abmessungen.Text))
- Tabelle3.Cells(lZeile, 4).Value = AnzahlMatten.Text
- Tabelle3.Cells(lZeile, 5).Value = Personal3.Text
- Tabelle3.Cells(lZeile, 6).Value = Information3.Text
- Tabelle3.Cells(lZeile, 1).Value = Date
- Tabelle3.Cells(lZeile, 8).Value = Format(Time, "hh:mm:ss")
- 'Die ListBox muss nun neu geladen werden
- 'allerdings nur, wenn sich der Name (ID) geändert hat
- If ListBox3.Text <> Trim(CStr(Abmessungen.Text)) Then
- Call UserForm3_Initialize
- If ListBox3.ListCount > 0 Then ListBox3.ListIndex = 0
- End If
- Exit Do 'Vorzeitiges Ende, da der Datensatz schon gefunden ist
- End If
- lZeile = lZeile + 1 'Nächste Zeile bearbeiten
- Loop
- 'Klick auf die ListBox Ereignisroutine
- Private Sub ListBox3_Click()
- Dim lZeile As Long
- 'Wenn der Benutzer einen Namen anklickt, suchen wir
- 'diesen in der Tabelle1 heraus und tragen die Daten
- 'in die TextBoxen ein.
- 'Wir löschen standardmäßig alle bisherigen TextBoxen-Inhalte
- Holzart3 = ""
- Abmessungen = ""
- Personal3 = ""
- AnzahlMatten = ""
- Information3 = ""
- 'Nur wenn ein Eintrag selektiert/markiert ist
- If ListBox3.ListIndex >= 0 Then
- lZeile = 3 'Start in Zeile 3
- 'Schleife solange etwas in der ersten Spalte in Tabelle 1 drin steht
- Do While Trim(CStr(Tabelle3.Cells(lZeile, 1).Value)) <> ""
- 'Wenn wir den Namen aus der ListBox1 in der Tabelle1 Spalte 1
- 'gefunden haben, übertragen wir die anderen Spalteninhalte
- 'in die TextBoxen!
- If ListBox3.Text = Trim(CStr(Tabelle3.Cells(lZeile, 2).Value)) Then
- 'TextBoxen füllen
- Abmessungen = Trim(CStr(Tabelle3.Cells(lZeile, 3).Value))
- AnzahlMatten = Tabelle3.Cells(lZeile, 4).Value
- Holzart3 = Tabelle3.Cells(lZeile, 2).Value
- Personal3 = Tabelle3.Cells(lZeile, 5).Value
- Information3 = Tabelle3.Cells(lZeile, 6).Value
- Exit Do 'Vorzeitiges Ende, da der Datensatz schon gefunden ist
- End If
- lZeile = lZeile + 1 'Nächste Zeile bearbeiten
- Loop
- End If
- End Sub
- 'Startroutine, wird ausgeführt bevor die Eingabemaske angezeigt wird
- Private Sub UserForm3_Initialize()
- Dim lZeile As Long
- 'Alle TextBoxen leer machen
- Holzart3 = ""
- Abmessungen = ""
- AnzahlMatten = ""
- Personal3 = ""
- Information3 = ""
- 'laden aller vorhandenen Einträge in die ListBox1
- ListBox3.Clear 'Zuerst einmal die Liste leeren
- lZeile = 3 'Start in Zeile 3
- 'Schleife solange etwas in der ersten Spalte in Tabelle 1 drin steht
- Do While Trim(CStr(Tabelle3.Cells(lZeile, 1).Value)) <> ""
- 'Aktuelle Zeile in die ListBox eintragen
- If Tabelle3.Cells(lZeile, 1).Value = Date Then
- ListBox3.AddItem Trim(CStr(Tabelle3.Cells(lZeile, 2).Value))
- End If
- lZeile = lZeile + 1 'Nächste Zeile bearbeiten
- Loop
- End Sub