Registriert seit: 13.11.2014
Version(en): 2010
Hallo alle zusammen.
Mikes_Einkauf.xlsm (Größe: 770,11 KB / Downloads: 27)
Ich würde gerne in meiner Mappe, mit der ich Bestellungen tätige, einen aktuellen Lieferstatus in einer Maske anzeigen, neu eingeben und ändern können. Ich werde oft nach diesem Staus gefragt, und möchte dieses natürlich schnell und einfach finden können. Ich habe hierfür erst einmal eine Userform erstellt "Lieferstatus". Diese kann ich schon einmal über eine Button auf meiner Hauptseite "Hauptmenü" aufrufen und darin auch wieder schließen. Ich habe die VBA-Code Programmierung immer noch nicht so recht verstanden. Mein Problem ist es wieder einmal in dieser Maske die einzelnen Comboboxen mit Werten anzeigen zu lassen, oder eine Auswahl dort auch anzuzeigen. Ich habe hier mal meine Mappe zur Ansicht eingestellt. Im Hauptmenü oben rechts ein Button zum Aufruf der Userform, in der ich suchen und auch Dinge eingeben möchte. (unter Status-Bemerkung) Wenn ich dort Eingabe mache, oder eine bestehende ändere, möchte ich diese dann speichern in dem Blatt "Bestellübersicht" unter Spalte K zu der passenden Bestellnummer, sowie zu dem passenden Artikel. Wer kann mir dabei helfen??? ......Atilla vielleicht?  Grüße an alle. Mike
Registriert seit: 13.11.2014
Version(en): 2010
09.03.2015, 21:58
(Dieser Beitrag wurde zuletzt bearbeitet: 09.03.2015, 21:59 von Mike4711.)
Hallo zusammen, ich habe hier meine aktuelle volle Mappe, in der ich versucht habe schon mal ein paar Codes einzusetzen.
Kopie_Mikes_Einkauf.xlsm (Größe: 1.009,5 KB / Downloads: 28)
Die Maske hat noch 2 Zusätze, die ich unbedingt brauche. Die ersten 3 Comboboxen, bekomme ich schon gefüllt, die 3 nicht ganz so, wie ich es haben möchte. Ich habe diese Codes aus der Userform "Bestellung Suche" genommen und soweit ich das verstanden habe angepasst. leider klappt das noch nicht ganz so mit der 3. Combobox, denn da soll er mir nur die Artikel, zu der passenden Bestellnummer, wie auch Lieferanten anzeigen. Vielleicht kann jemand so besser etwas damit anfangen. Den Rest, bekomme ich einfach nicht eingesetzt. Grüße Mike
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallo Mike, da kommt erst mal eine Passwortabfrage
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 13.11.2014
Version(en): 2010
(09.03.2015, 22:07)schauan schrieb: Hallo Mike,
da kommt erst mal eine Passwortabfrage  Ups...hab vergessen es raus zu nehmen  atilla :19:
Registriert seit: 13.11.2014
Version(en): 2010
Passwort für diese Mappe ist
atilla
Gruß Mike
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallo Mike, ich weiß jetzt nicht, warum Du beim Aktivieren des Userforms alle 3 Listboxen füllst. Normalerweise würde ich die entsprechend Auswahl nacheinander füllen, also zuerst nur die Lieferanten und dann Step by Step die anderen. Beim Activate würde m.E. .die combobox2 reichen, dann füllst Du bei der Auswahl die combobox3 und am Ende die combobox2. (Die Bezeichnungen sind zum einen etwas durcheinander und zum anderen nicht gerade aussagekräftig ...) Ich habe hier mal das Füllen auf zwei Makros aufgeteilt, mit etwas Geschick bekommt man das auch etwas zusammengelegt. Du musst natürlich noch die Change-Makros anpassen. PHP-Code: Sub combo1_füllen() Dim i As Integer, lngz As Long Dim arr1 As Variant Dim D1 As Object, D2 As Object, D3 As Object Set D1 = CreateObject("Scripting.Dictionary") Set D2 = CreateObject("Scripting.Dictionary") Set D3 = CreateObject("Scripting.Dictionary") With Sheets("Bestellübersicht") lngz = .Cells(.Rows.Count, 1).End(xlUp).Row arr1 = .Range("A2:E" & lngz) D1("bitte wählen") = "bitte wählen" D2("bitte wählen") = "bitte wählen" D3("bitte wählen") = "bitte wählen" For i = 2 To UBound(arr1) If arr1(i, 5) = Me.ComboBox2.Text Then D1(CStr(RTrim(arr1(i, 1)))) = 0 End If Next i End With
If D1.Count > 0 Then Me.ComboBox1.List = Application.Transpose(D1.Keys) Me.ComboBox1.ListIndex = 0 Me.ComboBox1.SelLength = Len(Me.ComboBox1.Text) boVar = True End If End Sub
Sub combo3_füllen() Dim i As Integer, lngz As Long Dim arr1 As Variant Dim D1 As Object, D2 As Object, D3 As Object Set D1 = CreateObject("Scripting.Dictionary") Set D2 = CreateObject("Scripting.Dictionary") Set D3 = CreateObject("Scripting.Dictionary") With Sheets("Bestellübersicht") lngz = .Cells(.Rows.Count, 1).End(xlUp).Row arr1 = .Range("A2:E" & lngz) D1("bitte wählen") = "bitte wählen" D2("bitte wählen") = "bitte wählen" D3("bitte wählen") = "bitte wählen" For i = 2 To UBound(arr1) If arr1(i, 1) = Me.ComboBox1.Text And arr1(i, 5) = Me.ComboBox2.Text Then D1(CStr(RTrim(arr1(i, 2)))) = 0 End If Next i End With
If D1.Count > 0 Then Me.ComboBox3.List = Application.Transpose(D1.Keys) Me.ComboBox3.ListIndex = 0 Me.ComboBox3.SelLength = Len(Me.ComboBox1.Text) boVar = True End If End Sub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 13.11.2014
Version(en): 2010
Hallo Andre,
Man oh man...du denkst wohl, ich bin da schon ein fortgeschrittener...oder? ;) :s
Die Codes, die ich dort rein gesetzt habe, habe ich aus der userform "Bestellung suchen". Diesen hat Atilla programmiert. Ich habe gedacht, von der Reihenfolge, wie ich meine Comboboxen gesetzt habe, müsst ich diesen Code doch einfach kopieren und in meine Maske setzten. Aber das hat ja nur zum teil geklappt. :)
Ich bin totaler Anfänger und ich würde sehr gerne diese Maske Schritt für Schritt bearbeiten und den Code auch versehen. Vielleicht kannst du mir in deinem Code Zeile für Zeile erklären, was jede Zeile verursacht.
Was ist Change Makros? :16:
Ich kopiere erst einmal deine Code in die Testmappe und schaue was passiert.
Dir erst einmal vielen Dank für diesen.
Grüße Mike
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallo Mike, Du hast zu jeder Combobox so ein Change-Makro - oder anders gesagt, es gibt Private Sub ComboBox1_Change() Private Sub ComboBox2_Change() Private Sub ComboBox3_Change() Zum Testen sieht das bei mir so aus: Code: Private Sub ComboBox1_Change() If boVar = True Then combo3_füllen End If 'Bestellnummer waehlen - Artikelnummer fuellen End Sub
Private Sub ComboBox2_Change() 'Lieferant waehlen - Bestellnummer fuellen If boVar = False Then combo1_füllen End If End Sub
Private Sub ComboBox3_Change() End Sub
Die combobox2 ist zur Auswahl des Lieferanten, ich hätte die z.B. cboLiefer o.ä. genannt. Da der Name nichts sagt, hab ich zumindest einen Kommentar drunter geschrieben, um was es dabei geht. Mit der combobox1 wählst Du eine Bestellnummer, die aber abhängig ist vom zuvor ausgewählten Lieferanten. Die combobox3 hat nichts mehr im Makro stehen, da ich denke, dass damit die Auswahl abgeschlossen ist. Die Auswahlliste wird in Abhängigkeit von zuvor gewähltem Lieferant und Bestellnummer gefüllt. Das mit den BoVar's müsste man eventuell auch noch anders regeln. Die sind dazu da, dass bei Auswahl in den Boxen zuweilen nichts mehr geändert wird. Ich würde es so programmieren, dass bei Auswahl einer Listbox nur die zuvor gewählte nicht mehr zugänglich ist und bei der Auswahl eine Reihenfolge eingehalten wird. Ansonsten geht's eventuell etwas durcheinander zu oder die Einträge passen nicht zueinander ... Wenn ich nicht jederzeit bzw. gleich antworte nicht verzagen. Bin beruflich und familiär eingespannt und betreue hier die Technik und kann daher nicht jederzeit was posten
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 13.11.2014
Version(en): 2010
10.03.2015, 22:10
(Dieser Beitrag wurde zuletzt bearbeitet: 10.03.2015, 22:11 von Mike4711.)
Hallo Andre, ich glaub so ganz habe ich das noch nicht verstanden. Was ich aus diesen Change Aufrufen verstehe, das ich in der jeweiligen Combobox, wenn dort etwas angezeigt wird, es anwählen kann (Change). Habe nun hinter der Maske deine Change -Codes so eingefügt, danach die Codes für das füllen. Danach habe ich den Editor wieder verlassen und die Maske aufgerufen. Doch ich konnte mir nichts in den Comboboxen anzeigen lassen. (Leer)  Dann bin ich zurück in den Editor und habe den Code "Private Sub UserForm_Activate()", den ich in meiner eingestellten Mappe hier drinnen hatte.....vor den Füll-Codes. Dann wieder die Maske aufgerufen und ich konnte alle 3 Boxen anwählen und auswählen. Doch es wird nicht passend angezeigt....also Lieferant passt nicht immer zur Bestellnummer und Artikel passt auch nicht immer. Bei manchen Lieferanten, wird gar nichts angezeigt. ich denke, der Activate Code ist hierfür nicht richtig, oder? Die Codes hinter meiner Maske sehen jetzt wie folgt aus: Code: Option Explicit Private boVar As Boolean
Private Sub ComboBox1_Change() If boVar = True Then combo3_füllen End If 'Bestellnummer waehlen - Artikelnummer fuellen End Sub
Private Sub ComboBox2_Change() 'Lieferant waehlen - Bestellnummer fuellen If boVar = False Then combo1_füllen End If End Sub
Private Sub ComboBox3_Change() End Sub Private Sub UserForm_Activate() Dim i As Integer, lngz As Long Dim arr1 As Variant Dim D1 As Object, D2 As Object, D3 As Object Set D1 = CreateObject("Scripting.Dictionary") Set D2 = CreateObject("Scripting.Dictionary") Set D3 = CreateObject("Scripting.Dictionary") With Sheets("Bestellübersicht") lngz = .Cells(.Rows.Count, 1).End(xlUp).Row arr1 = .Range("A2:E" & lngz) D1("bitte wählen") = "bitte wählen" D2("bitte wählen") = "bitte wählen" D3("bitte wählen") = "bitte wählen" For i = 2 To UBound(arr1) D1(CStr(RTrim(arr1(i, 1)))) = 0 D2(arr1(i, 5)) = 0 D3(arr1(i, 2)) = 0 Next i End With
If D1.Count > 0 Then Me.ComboBox1.List = Application.Transpose(D1.Keys) Me.ComboBox1.ListIndex = 0 Me.ComboBox1.SelLength = Len(Me.ComboBox1.Text) boVar = True Me.ComboBox2.List = Application.Transpose(D2.Keys) Me.ComboBox2.ListIndex = 0 Me.ComboBox2.SelLength = Len(Me.ComboBox2.Text) boVar = False Me.ComboBox3.List = Application.Transpose(D3.Keys) Me.ComboBox3.ListIndex = 0 Me.ComboBox3.SelLength = Len(Me.ComboBox3.Text) boVar = False End If End Sub
Sub combo1_füllen() Dim i As Integer, lngz As Long Dim arr1 As Variant Dim D1 As Object, D2 As Object, D3 As Object Set D1 = CreateObject("Scripting.Dictionary") Set D2 = CreateObject("Scripting.Dictionary") Set D3 = CreateObject("Scripting.Dictionary") With Sheets("Bestellübersicht") lngz = .Cells(.Rows.Count, 1).End(xlUp).Row arr1 = .Range("A2:E" & lngz) D1("bitte wählen") = "bitte wählen" D2("bitte wählen") = "bitte wählen" D3("bitte wählen") = "bitte wählen" For i = 2 To UBound(arr1) If arr1(i, 5) = Me.ComboBox2.Text Then D1(CStr(RTrim(arr1(i, 1)))) = 0 End If Next i End With
If D1.Count > 0 Then Me.ComboBox1.List = Application.Transpose(D1.Keys) Me.ComboBox1.ListIndex = 0 Me.ComboBox1.SelLength = Len(Me.ComboBox1.Text) boVar = True End If End Sub Sub combo3_füllen() Dim i As Integer, lngz As Long Dim arr1 As Variant Dim D1 As Object, D2 As Object, D3 As Object Set D1 = CreateObject("Scripting.Dictionary") Set D2 = CreateObject("Scripting.Dictionary") Set D3 = CreateObject("Scripting.Dictionary") With Sheets("Bestellübersicht") lngz = .Cells(.Rows.Count, 1).End(xlUp).Row arr1 = .Range("A2:E" & lngz) D1("bitte wählen") = "bitte wählen" D2("bitte wählen") = "bitte wählen" D3("bitte wählen") = "bitte wählen" For i = 2 To UBound(arr1) If arr1(i, 1) = Me.ComboBox1.Text And arr1(i, 5) = Me.ComboBox2.Text Then D1(CStr(RTrim(arr1(i, 2)))) = 0 End If Next i End With
If D1.Count > 0 Then Me.ComboBox3.List = Application.Transpose(D1.Keys) Me.ComboBox3.ListIndex = 0 Me.ComboBox3.SelLength = Len(Me.ComboBox1.Text) boVar = True End If End Sub
Private Sub CommandButton2_Click() Unload Me End Sub
ich bin ja schon froh, das überhaupt etwas jetzt angezeigt wird. ;) Bei der Maske geht es mir darum, das ich ganz schnell einen Lieferstatus nachsehen kann und falls notwendig, einen ändern oder einen neuen anlegen kann. Da die Bestellungen in der Bestellübersicht abgelegt werden, dachte ich, es ist Sinnvoll, das die Bemerkungen dort dann in der Spalte K abgelegt werden können. Ob ich jetzt den Aufbau der Maske so Sinnvoll angelegt habe, weiß ich nicht. Aber was er da an Infos anzeigt, ist mir schon wichtig. Grüße Mike
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallo Mike,
aus dem bisherigen code entfernst Du die 3 Change-Makros und das Makro Combo_Füllen. Dafür kommen dann meine Makros rein und damit sollte auch was funktionieren. Die Auswahl erfolgt dann, wie ich schon geschrieben habe,, schrittweise. Mit dem userform_activate machst Du nix.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
|