Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1704to1708
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

Suchfunktion Userform

Suchfunktion Userform
06.08.2019 14:52:04
Simo
Hallo liebes Forum,
ich habe bereits viel gelesen und ein eigenes EXCEL VBA Tool erstellt. Allerdings habe ich Probleme mit meiner Suchfunktion. Aktuell kann ich in der Userform "Bestand_Buchen" Artikel, die in der Tabelle ("Daten") hinterlegt sind suchen. Anschließend werden die unter den Suchbegriff fallenden Artikel auch Selektiert. Es bleibt aber dennoch ziemlich unübersichtlich, da die restlichen Artikel noch angezeigt werden. Das zweite Problem ist: Wenn ich nach einer Suche einen Artikel auswähle und dann diesen im Wareneingang verbuchen möchte, dann wird dieser nicht angesprochen.
Wenn jedoch die Userform neu gestartet wird und ein Artikel ohne Suchen ausgewählt wird, dann kann ohne Probleme der Wareneingang verbucht werden.
ich wünsche mir eine Suchfunktion, in der die Suchergebnisse in der ListBox angezeigt werden. Wenn beispielweise der Suchbegriff "Bohrer" eingegeben wird, sollen alle Positionen, die "Bohrer" in ihrem Namen enthalten in der Listbox aufgelistet werden. Anschließend soll der gefundene Artikel auswählbar und verbuchbar sein.
Ich hoffe ihr könnt mir da weiterhelfen.
Hier das File: https://www.herber.de/bbs/user/131295.xlsm
Mit freundlichen Grüßen
Simon

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suchfunktion Userform
07.08.2019 09:01:40
Simo
Hallo Matthias,
schon einmal vielen Dank für die schnelle Antwort und dem jetzt schon super Ergebnis! Nun hat sich leider ein neues Problem aufgetan.
Wenn ich nach der "Suche" den gewünschten Artikel selektiere und einen Wareneingang buche, dann wird die Menge nicht auf die korrekte Position in der Tabelle ("Cockpit") verschrieben.
Magst du da nochmal nachschauen?
Gruß Simon
AW: Suchfunktion Userform
07.08.2019 11:36:59
Matthias
Moin!
Da wäre die Frage, ob du das wirklich über VBA machen willst. Falls jemand (der das PSW kennt) mal was händisch einträgt (warum auch immer), wäre das nicht mehr aktuell. Da würde ich eher vorschlagen in die Spalte C (IST Bestand) eine Formel reinzuschreiben. Das hier würde langen
=SUMMEWENN(Eingang!A:A;Cockpit!A2;Eingang!B:B)-SUMMEWENN(Ausgang!A:A;Cockpit!A2;Ausgang!B:B)

in Spalte C eintragen und dann einfach runterziehen. Dann wird automatisch der Eingang minus Ausgang berechnet. Das sollte ja dann dein IST sein. Falls da ein UNerstrich als Zeilenumbruch entsteht, den vorher rausnehmen!
FAlls du es mit VBA brauchst, bitte nochmal melden. Dann müsste deine Ausgangsfunktion aber auch angepasst werden.
VG
Anzeige
AW: Suchfunktion Userform
07.08.2019 14:35:42
Simon
Hallo Matthias,
leider ist das noch nicht die richtige Variante für mich.
Die Tabelle ("Cockpit") soll für den Endbenutzer nicht editierbar sein. Die Bestände sollen lediglich über die Userform "Bestand_Buchen" gebucht werden. Die gebuchten Bestände sollen sich Live im Cockpit anpassen (das machen sie im Moment auch). Die Tabellen ("Eingang") und ("Ausgang") dienen nur zur Historie und zur Auswertung der Artikelbewegung.
Das Cockpit soll dem Endbenutzer dann nur Auskunft über den aktuellen Lagerbestand geben.
Wenn ich Bestände über die Userform buche, ohne dass ich vorher einen Artikel über die Suchfunktion gesucht habe, dann werden die Bestände im Cockpit der richtigen Artikelposition zugeordnet.
Wenn ich allerdings einen Artikel in der Userform über die Suchfunktion gesucht und in der ListBox ausgewählt habe, dann stimmt die verbuchte Position im Cockpit nicht mehr. Das liegt daran, dass in der ListBox die Reihenfolge nicht mehr identisch mit dem Cockpit ist, da ja einige ausgeblendet wurden.
Ich hoffe ich konnte das Problem halbwegs verständlich erklären :D
Gruß Simon
Anzeige
AW: Suchfunktion Userform
07.08.2019 15:43:21
Matthias
Moin!
Das Problem war schon klar :-) wußte nur nicht, ob es Sinn macht. Hier mal der Code aus der UF. Konnte die Datei jetzt nicht hochladen, da sie mir nach dem Abspeichern gecrasht ist. Habe den Code für Ein. und Ausbuchen angepasst. Dazu wird die Liste jetzt mit 2 Spalten gefüllt, wobei nur die erste angezeigt wird. In der zweiten Spalte ist die Zeilennummer hinterlegt. Damit die Felder mit der 0 nicht angezeigt werden, nehme ich die letzte Zeile aus Spalte 3. Wenn du also ein neues Element im Cockpit einfügst, dann in Spalte C eine 0 eintragen. Kannst es aber auch auf Spalte 1 umstellen, dann sind in dem Code die Zeilen mit 0 auch drin. Hier jetzt mal der ganze Code:

Option Explicit
Private Sub Button_Eingang_Click()
'On Error Resume Next
'Blattschutz beim Klicken des Button aufheben
Worksheets("Eingang").Unprotect Password:="123456"
Worksheets("Cockpit").Unprotect Password:="123456"
If TextBox_MengeEin.Value = "" Or ListBox_Material.List(ListBox_Material.ListIndex) = "" Or  _
ComboBox_Prozent.Value = "" Then
MsgBox "Zum Buchen von Wareneingängen ,muss ein Material,die Menge und Lieferung in Prozent  _
ausgewählt werden!"
Exit Sub
'die Sub wird verlassen, ohne dass das Userform geschlossen wird!
End If
'Abfrage ob Daten korrekt
If MsgBox("Sind die eingetragenen Werte korrekt?", vbOKCancel) = vbOK Then
If TextBox_MengeEin.Value >= "1" Then
'Erste freie Zeile ausfindig machen
Dim last As Integer
last = Sheets("Eingang").Cells(Rows.Count, 1).End(xlUp).Row + 1
'Material
Sheets("Eingang").Cells(last, 1).Value = ListBox_Material.List(ListBox_Material. _
ListIndex)
'Wareneingang
Sheets("Eingang").Cells(last, 2).Value = TextBox_MengeEin.Value
'Akteuelle Datum
Sheets("Eingang").Cells(last, 3).Value = VBA.Date
End If
Else
MsgBox "Vorgang abgebrochen!", vbCritical
Exit Sub
End If
'-------------Verknüpfung der ListBox mit der Datenbank und Anpassung der Bestände-------------- _
Sheets("Cockpit").Select
Dim n As Integer, k As Integer
k = Me.ListBox_Material.List(Me.ListBox_Material.ListIndex, 1)
On Error Resume Next
Range("C" & k).Value = Range("C" & k).Value + TextBox_MengeEin.Value
Range("I" & k).Value = ComboBox_Prozent.Value + Range("I" & k).Value
If Range("I" & k).Value >= 100 Then
MsgBox "Bestellung ist vollständig!", vbOKOnly
End If
'----------------------------------------------------------------------------------------------- _
'---Schleife zum markieren der Bestandsfarben
Dim ivariable As Integer
ivariable = 2
Do
If Range("C" & ivariable).Value = "1" Or TextBox_Kostenstelle >= "1" Then
'Erste freie Zeile ausfindig machen
'Erste freie Zeile ausfindig machen
Sheets("Ausgang").Select
Dim last2 As Integer                                             'Variable last2 beachten
last2 = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
'Material
Cells(last2, 1).Value = ListBox_Material.Value
'Wareneingang
Cells(last2, 2).Value = TextBox_MengeAus
'Kostenstelle
Cells(last2, 3).Value = TextBox_Kostenstelle
'Akteuelle Datum
Cells(last2, 4).Value = VBA.Date
End If
Else
MsgBox "Vorgang abgebrochen!", vbCritical
Exit Sub
End If
'-------------Verknüpfung der ListBox mit der Datenbank und Anpassung der Bestände-------------- _
Sheets("Cockpit").Select
Dim n As Integer, k As Integer
k = Me.ListBox_Material.List(Me.ListBox_Material.ListIndex, 1)
On Error Resume Next
Range("C" & k).Value = Range("C" & k).Value - TextBox_MengeAus.Value
Range("C" & k).Select
'----------------------------------------------------------------------------------------------- _
'---Schleife zum markieren der Bestandsfarben
Dim ivariable As Integer
ivariable = 2
Do
If Range("C" & ivariable).Value 

VG
Anzeige
AW: Suchfunktion Userform
08.08.2019 08:17:54
Simon
Moin Matthias,
ich habe den Code in die UF eingefügt aber leider gibt es einen Fehler beim Kompilieren.
Methode oder Datenobjekt nicht gefunden.
Liegt das an meiner Excelversion ?
Userbild
AW: Suchfunktion Userform
08.08.2019 13:15:05
Matthias
Moin!
Nein. Da mir die Datei abgeschmiert ist, habe ich sie im OO geöffnet, um den Code zu sehen. Dort musste ich allerdings das Kürzel REM vor jeder Zeile entfernen. Habe geschaut, ob er nur die richtigen entfernt hat, da ist mir aber wohl was entgangen.
Die Zeile muss lauten:
me.listbox_material.removeitem(z)
(hoffentlich richtig abgeschrieben).
Damit sollte es dann klappen. Ansonsten nochmal melden. Versuche die Datei nachher nochmal herzustellen.
VG
Anzeige
AW: Suchfunktion Userform
08.08.2019 14:43:31
Simon
Moin Matthias,
jetzt funktioniert alles einwandfrei, ich bin dir sehr dankbar :)
Wenn du mal etwas 3D gedrucktes benötigst, revanchiere ich mich gerne!
Gruß Simon

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige