Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1712to1716
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datenbank mit Eingabefenster

Datenbank mit Eingabefenster
27.09.2019 09:12:42
Markus
Hallo zusammen,
ich bin dabei mir eine Datenbank aufzubauen und möchte das Suchfenster, bzw. die Funktion darin erweitern.
Und zwar möchte ich, dass der wenn ich in dem Feld gefunden einen Treffer habe und ich diesen doppelklicke sich das Formular "UserForm1_Eingabefenster" öffnet, die Daten der gefundenen Zeile lädt und in dem Fenster anzeigt.
Außerdem sollen dann wenn Änderungen vorgenommen werden diese dann in der jeweiligen Zeile gespeichert werden.
Ich hoffe, ihr könnt mir dabei helfen. Bei Fragen einfach fragen :-)
Hier die Datei:
https://www.herber.de/bbs/user/132228.xls
VG
Markus

25
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datenbank mit Eingabefenster
27.09.2019 10:32:01
Oberschlumpf
Hi Markus,
versuch mal:
https://www.herber.de/bbs/user/132230.xls
Klick auf den Button "Suchen" und such nach einem vorhandenen Datensatz.
Nun klick in der Listbox doppelt auf einen der Treffer
...das Userform "Eingabefenster" wird angezeigt, und die Controls erhalten die Werte aus der zuvor doppelt angeklickten Listbox
Ändere nun einen beliebigen Eintrag im Eingabefenster, klick auf "Speichern" und schau dir die Tabelle "Aufgaben" an.
Die von dir geänderten Daten wurden in der Tabelle in der richtigen Zeile übernommen.
Hilfts?
Ciao
Thorsten
Anzeige
Vorschlag zur ListBox...
27.09.2019 10:34:13
Matthias
Hallo
Vorschlag:
Ergänze Deine Listbox um eine Spalte.
Entsprechend ColumnCount um 1 erhöhen!
ListBox1.List(ListBox1.ListCount - 1, 5) = Range(rngSearch.Address).Row

In Diese schreibst Du die Zeile des Fundes Deiner Suche.
Nun kannst Du gezielt aus der Tabelle "Aufgaben" die Daten für Deine 2.UserForm holen.
Userbild
von mir ein anderer Weg
27.09.2019 10:40:38
mir
Hallo Markus,
indem du deine Listbox1 im Userform_suchen um eine Spalte erweiterst. Im Eigenschaftenfenster ColumnCount auf 6 stellen.
In diese zusätzliche Spalte nimmst du einfach beim Suchen die Zeilennummer des jeweiligen Treffers mit auf.
Unter ColumnWidth stellst du dann die Breite deiner Spalten der Listbox ein. Hierbei stellst du die Breite der letzten Spalte (=Spalte 5) auf 0 ein. Damit werden dir die Einträge in der Listbox nicht angezeigt.
ColumnWidth 60 Pt;60 Pt;60 Pt;60 Pt;60 Pt;60 Pt;10 Pt
Die Spaltenbreite mußt du an deine Bedürfnisse anpassen. Ich hab jetzt mal die letzte Spalte auf 10 eingestellt, damit du die Einträge siehst. Wie schon gesagt, die dann auf 0 einstellen.
Jetzt kannst du dann beim "Zurückschreiben" von geänderten Daten über die Spalte 6 der Listbox auf die jeweilige Zeilennummer des Datensatzes zugreifen.
Code für die Userform_suchen:
Option Explicit
Private Sub cmdClose_Click()
Unload Me
End Sub
Private Sub cmdSearch_Click()
Dim objSH As Worksheet
Dim rngSearch As Range
Dim strFirst As String
If txtSearch  "" Then
ListBox1.Clear
Set objSH = Sheets("Aufgaben")
With objSH
Set rngSearch = .Range("A:E").Find(What:=txtSearch, LookIn:=xlValues, _
LookAt:=IIf(chkPart, xlWhole, xlPart), MatchCase:=IIf(chkCase, True, False))
If Not rngSearch Is Nothing Then
strFirst = rngSearch.Address
Do
ListBox1.AddItem .Cells(rngSearch.Row, 1)
ListBox1.List(ListBox1.ListCount - 1, 1) = .Cells(rngSearch.Row, 2)
ListBox1.List(ListBox1.ListCount - 1, 2) = .Cells(rngSearch.Row, 3)
ListBox1.List(ListBox1.ListCount - 1, 3) = .Cells(rngSearch.Row, 4)
ListBox1.List(ListBox1.ListCount - 1, 4) = .Cells(rngSearch.Row, 5)
'Aufnahme der Fundzeile in Spalte 6 der Listbox
ListBox1.List(ListBox1.ListCount - 1, 5) = rngSearch.Row
Set rngSearch = .Range("A:D").FindNext(rngSearch)
Loop While Not rngSearch Is Nothing And rngSearch.Address  strFirst
Else
ListBox1.AddItem "Kein Treffer!"
End If
End With
End If
End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Me.Hide
UserForm1_Eingabefenster.Show
End Sub
Code für die Userform_Eingabefenster:
Option Explicit
Private Sub CommandButton1Speichern_Click()
With UserForm_suchen.ListBox1
'in Listbox1.List(.Listbox1.Listindex, 5) steht die Zeile
Worksheets("Aufgaben").Cells(.List(.ListIndex, 5), 1) = Me.ComboBox1_Name
Worksheets("Aufgaben").Cells(.List(.ListIndex, 5), 2) = Me.ComboBox2_Taetigkeit
Worksheets("Aufgaben").Cells(.List(.ListIndex, 5), 3) = Me.TextBox3Zusatzinformation
Worksheets("Aufgaben").Cells(.List(.ListIndex, 5), 4) = CDate(Me.TextBox4erhaltenam)
Worksheets("Aufgaben").Cells(.List(.ListIndex, 5), 5) = Me.TextBox5Kommentar
'einlesen des Kommentar aus der Tabelle Aufgaben
Me.TextBox5Kommentar = Worksheets("Aufgaben").Cells(.List(.ListIndex, 5), 5)
End With
Unload Me
UserForm_suchen.Show
End Sub
Private Sub CommandButton2Schliessen_Click()
Unload Me
UserForm_suchen.Show
End Sub
Private Sub TextBox5erledigtam_Change()
UserForm1_Eingabefenster.TextBox5erledigtam = Date
End Sub
Private Sub UserForm_Activate()
With UserForm_suchen
Me.ComboBox1_Name = .ListBox1.List(.ListBox1.ListIndex, 0)
Me.ComboBox2_Taetigkeit = .ListBox1.List(.ListBox1.ListIndex, 1)
Me.TextBox3Zusatzinformation = .ListBox1.List(.ListBox1.ListIndex, 2)
Me.TextBox4erhaltenam = .ListBox1.List(.ListBox1.ListIndex, 3)
End With
End Sub
Das Makro reagiert auf Doppelklick in der Listbox1.
Kann im Moment leider nichts hochladen.
Gruß Werner
Anzeige
Matthias + Werner
27.09.2019 10:48:48
Oberschlumpf
Hallo,
eure Idee ist einfach geiler :-)
So spart man sich das erneute Suchen in der Tabelle nach der richtigen Zeile; so wie es in meinem Vorschlag gemacht wird.
Ciao
Thorsten
AW: Matthias + Werner
27.09.2019 10:58:51
Markus
Vielen Dank für die schnelle Hilfe!
Werner Deine Lösung verstehe ich leider nicht ganz, schade dass Du gerade nichts hoch laden kannst.
Könntest Du mir vielleicht sobald es wieder geht eine Beispieldatei hochladen?
Thorsten, Deine Lösung ist auch gut :-) Vielen Dank dafür!!!
Viele Grüße,
Markus
AW: Matthias + Werner
27.09.2019 11:05:25
Werner
Hallo Markus,
was gibt es da groß zu verstehen.
Die beiden Codes in das Codemodul der jeweiligen Userform kopieren -deinen dort vorhandenen Code natürlich vorher löschen.
Im Userform_suche bei Listbox1 ColumnCount von 5 auf 6 erhöhen und die Spaltenbreiten bei ColumnWidth eintragen.
Das wars doch schon.
Gruß Werner
Anzeige
AW: Matthias + Werner
27.09.2019 11:16:24
Markus
Hallo Werner,
habe verstanden was Du meinst.
Ich habe die Codes eingefügt aber beim Speichern kommt eine Fehlermeldung....
Kannst Du mal versuchen, ob es bei Dir funktioniert?
https://www.herber.de/bbs/user/132232.xls
VG
Markus
AW: Matthias + Werner
27.09.2019 11:26:44
Werner
Hallo Markus,
schau dir mal dein "Datum" in D5 an - fällt dir was auf?
Gruß Werner
AW: Matthias + Werner
27.09.2019 11:49:20
Markus
Hallo Werner,
ja das liegt in der Vergangenheit, aber was hat das damit zu tun, dass ich nichts speichern kann?
VG
Markus
AW: Matthias + Werner
27.09.2019 11:53:03
Werner
Hallo Markus,
gibt es bei dir im Kalender den 31.02., bei mir nämlich nicht.
Gruß Werner
Anzeige
AW: Matthias + Werner
27.09.2019 11:58:37
Markus
Hallo Werner,
ich habe sicherheitshalber nachgesehen, bei mir gibt es den auch nicht :-) :-)
Aber an dem liegt es ja nicht, dass es bei mir nicht funktioniert.....
VG
Markus
AW: Matthias + Werner
27.09.2019 12:08:28
Werner
Hallo Markus,
sondern?
Mit deiner nochmal hochgeladenen Mappe bringt er mit einen Typenkonflikt wenn ich versuche den Datensatz mit dem "Datum" vom 31.02.2017 zu speichern. Was ja auch logisch ist, weil das nun mal kein gültiges Datum ist.
Hast du denn mal ein gültiges Datum eingetragen und es noch mal versucht?
Bei mir macht er nämlich genau das was er machen soll.
Gruß Werner
AW: Matthias + Werner
27.09.2019 12:03:51
Werner
Hallo Markus,
ersetz mal den Code vom Speichern Button mit dem hier:
Private Sub CommandButton1Speichern_Click()
With UserForm_suchen.ListBox1
'in Listbox1.List(.Listbox1.Listindex, 5) steht die Zeile
If Me.TextBox4erhaltenam  "" Then
If IsNumeric(Me.TextBox4erhaltenam) Then
If IsDate(Me.TextBox4erhaltenam) Then
Worksheets("Aufgaben").Cells(.List(.ListIndex, 5), 4) = CDate(Me. _
TextBox4erhaltenam)
Else
MsgBox "Wert ist kein gültiges Datum"
Me.TextBox4erhaltenam.SetFocus
Exit Sub
End If
End If
End If
Worksheets("Aufgaben").Cells(.List(.ListIndex, 5), 1) = Me.ComboBox1_Name
Worksheets("Aufgaben").Cells(.List(.ListIndex, 5), 2) = Me.ComboBox2_Taetigkeit
Worksheets("Aufgaben").Cells(.List(.ListIndex, 5), 3) = Me.TextBox3Zusatzinformation
Worksheets("Aufgaben").Cells(.List(.ListIndex, 5), 5) = Me.TextBox5Kommentar
'einlesen des Kommentar aus der Tabelle Aufgaben
Me.TextBox5Kommentar = Worksheets("Aufgaben").Cells(.List(.ListIndex, 5), 5)
End With
Unload Me
UserForm_suchen.Show
End Sub
Gruß Werner
Anzeige
AW: Matthias + Werner
27.09.2019 12:50:24
Markus
Hallo Werner,
ich habe das Datum angepasst und den Code wie Du geschrieben hast geändert.
Beim speichern bringt er mir dann einen Fehler:
Worksheets("Aufgaben").Cells(.List(.ListIndex, 5), 4) = CDate(Me. _
TextBox4erhaltenam)
wird gelb markiert.....
VG
Markus
AW: Matthias + Werner
27.09.2019 13:12:19
Werner
Hallo,
dann lad mal genau die Datei hoch.
Gruß Werner
AW: Matthias + Werner
27.09.2019 13:56:56
Werner
Hallo,
das Makro hast du mitnichten geändert.
Dann hast du da eine Spalte "erhalten am" in der ich ein Datum erwarten würde.
Warum steht dann in deinem letzten Datensatz in dieser Spalte ein Text?
https://www.herber.de/bbs/user/132245.xls
Gruß Werner
Anzeige
AW: Matthias + Werner
27.09.2019 14:08:00
Markus
Hallo,
also das Datum habe ich jetzt richtig eingetragen statt dem Text.
Wenn das Suchfenster die Userform öffnet füllt es alle Felder aus bis auf das letzte Feld "Bemerkungen".
Und der Fehler den ich beschrieben habe beim speichern der kommt wenn ich nicht über suchen gehe, sondern wenn ich die Userform über Eingabe gehe, dort Daten eintrage und speichern möchte.
Geht das bei Dir denn?
https://www.herber.de/bbs/user/132246.xls
VG
Markus
AW: Matthias + Werner
28.09.2019 16:49:14
Werner
Hallo Markus,
mal ein paar Anmerkungen am Rande:
Entweder hast du dir den Code von mir überhaupt nicht angesehen, oder du verstehst nicht was da passiert.
Ansonsten hättest du die Codezeile für das Übernehmen der Bemerkungen (die ich vergessen hatte) anhand des restlichen Codes selbst ergänzen können.
Dann hast du im Eingangsbeitrag von Problemen bezüglich der "Suchen" Userform / Übergabe der Daten in die zweite Userform und anschließendem Abspeichern geschrieben.
Danach hatte ich geschaut und dir eine Lösung angeboten. Dann schreibst du ständig, dass es nicht funktioniert und du Fehlermeldungen bekommst.
Dabei teilst du dann aber erst nach mehrmaligem hin und her schreiben mit, dass wir uns zwischenzeitlich auf einer ganz anderen Baustelle befinden. Mit ein paar mehr Infos von Anfang an, hätte man sich das sparen können.
Zudem zeigt sich hier auch wieder, dass du den Code nicht verstanden hast. Beim Einstieg über die "Suchen" Maske wird die entsprechende Zeilennummer in die Listbox mit aufgenommen. Beim Weiterarbeiten über die zweite Maske werden die Daten in die entsprechende Zeile, die aus der letzten Spalte der "Suchen" Maske bezogen wird, geschrieben.
Beim direkten Einstieg über die zweite Maske wird aber die "Suchen" Maske gar nicht aufgerufen, es ist also keine Zeile bekannt, weil diese ja nur dann vorhanden ist, wenn vorher gesucht wurde, was hier ja nicht der Fall ist.
Beim Speichern greifst du aber genau auf diesen Code zu. Das Programm kann ja gar nicht wissen wohin gespeichert werden soll (Zeile), weil die Zeile ja zuvor nicht aus der "Suchen" Maske zu verfügung steht.
Wie ich das sehe willst du einerseits vorhandene Datensätze ändern, über die "Suchen" Maske. Andererseits willst du komplett neue Datensätze direkt über die zweite Maske neu erfassen.
Schau dir mal deine Beispielmappe an.
https://www.herber.de/bbs/user/132268.xls
Gruß Werner
Anzeige
für eine Rückmeldung reichts wohl nicht. o.w.T.
02.10.2019 20:45:33
Werner
AW: für eine Rückmeldung reichts wohl nicht. o.w.T.
07.10.2019 10:51:17
Markus
Hallo Werner,
vielen Dank für Deine Hilfe.
Ich habe diese erst jetzt gelesen und hätte zwar noch Fragen,
aber wie Du mich hier angehst lasse ich das besser, denn das finde ich nicht in Ordnung.
Trotzdem noch einmal Danke.
VG
Markus
Vielen Dank fürs Ignorieren meiner AW ... owT
27.09.2019 23:42:29
Matthias
AW: Datenbank mit Eingabefenster
27.09.2019 11:04:13
Markus
Hallo Thorsten,
ich habe Deine Variante gerade getestet, wenn ich dann in einem Feld etwas ändere, dann schreibt es eine komplett neue Zeile. Ich möchte aber gerne, dass dieser Wert in der bestehenden Zeile überschrieben wird. Ist das möglich?
VG
Markus
AW: Datenbank mit Eingabefenster
27.09.2019 11:18:49
Oberschlumpf
Hi Markus,
wenn ich an meinem PC deine Bsp-Datei mit meinem VBA-Code starte, passiert das:
Schritt 1
Userbild
Schritt 2
Userbild
Schritt 3
Userbild
Schritt 4
Userbild
Ich kann also (noch) keinen Fehler entdecken.
Ich habe diese Datei zur Verfügung gestellt:
https://www.herber.de/bbs/user/132230.xls
Ciao
Thorsten
Anzeige
AW: Datenbank mit Eingabefenster
27.09.2019 11:41:46
Markus
Hallo Thorsten,
wenn ich dann im Suchfenster die gefundene Zeile doppelklicke, dann öffnet es das Fenster, befüllt die Felder, aber das Fenster mit dem Kommentar nicht, das bleibt leer.....
Das habe ich gerade mit Deiner Datei versucht.
VG
Markus

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige