Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.


Lieferstatus aus Bestellübersicht anzeigen und ändern per Maske
#1
Hallo alle zusammen.


.xlsm   Mikes_Einkauf.xlsm (Größe: 770,11 KB / Downloads: 19)

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? Blush


Grüße an alle.

Mike
to top
#2
Hallo zusammen,

ich habe hier meine aktuelle volle Mappe, in der ich versucht habe schon mal ein paar Codes einzusetzen.


.xlsm   Kopie_Mikes_Einkauf.xlsm (Größe: 1.009,5 KB / Downloads: 24)

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
to top
#3
Hallo Mike,

da kommt erst mal eine Passwortabfrage :-(
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
to top
#4
(09.03.2015, 21:07)schauan schrieb: Hallo Mike,

da kommt erst mal eine Passwortabfrage :-(

Ups...hab vergessen es raus zu nehmen Blush

atilla 19
to top
#5
Passwort für diese Mappe ist

atilla

Gruß Mike
to top
#6
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 Integerlngz As Long
   Dim arr1 
As Variant
   Dim D1 
As ObjectD2 As ObjectD3 As Object
   Set D1 
CreateObject("Scripting.Dictionary")
   
Set D2 CreateObject("Scripting.Dictionary")
   
Set D3 CreateObject("Scripting.Dictionary")
   
With Sheets("Bestellübersicht")
      
lngz = .Cells(.Rows.Count1).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 2 To UBound(arr1)
         If 
arr1(i5) = Me.ComboBox2.Text Then
            D1
(CStr(RTrim(arr1(i1)))) = 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 Integerlngz As Long
   Dim arr1 
As Variant
   Dim D1 
As ObjectD2 As ObjectD3 As Object
   Set D1 
CreateObject("Scripting.Dictionary")
   
Set D2 CreateObject("Scripting.Dictionary")
   
Set D3 CreateObject("Scripting.Dictionary")
   
With Sheets("Bestellübersicht")
      
lngz = .Cells(.Rows.Count1).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 2 To UBound(arr1)
         If 
arr1(i1) = Me.ComboBox1.Text And arr1(i5) = Me.ComboBox2.Text Then
            D1
(CStr(RTrim(arr1(i2)))) = 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-2016)
to top
#7
Hallo Andre,

Man oh man...du denkst wohl, ich bin da schon ein fortgeschrittener...oder? Wink  Confused


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.  Smile

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
to top
#8
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-2016)
to top
#9
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) Huh

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. Wink
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
to top
#10
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-2016)
to top


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  VBA Dateneingabe in Maske - auch alte Daten verändern David-21 9 598 28.08.2016, 16:28
Letzter Beitrag: schauan
  Bestellübersicht erstellen Saschavh 5 392 05.07.2016, 11:16
Letzter Beitrag: Rabe
  VBA Import Maske FelixWeb 1 272 14.05.2016, 04:43
Letzter Beitrag: schauan
Photo Maskierte Bild als Eingabe Maske für Sheet fderi 4 857 20.12.2015, 12:54
Letzter Beitrag: schauan
  Tabelle mit Maske befüllen doob81 26 2.970 19.10.2015, 12:44
Letzter Beitrag: Rabe
  VBA Maske Userform Excel21u 13 2.474 30.06.2015, 14:28
Letzter Beitrag: Excel21u
  Preislisten aus Userform (Maske)anzeigen und ausdrucken Mike4711 22 4.091 16.02.2015, 16:43
Letzter Beitrag: Mike4711
  Anzeige Überfällige Lieferung per Maske Mike4711 13 2.290 11.02.2015, 09:36
Letzter Beitrag: Mike4711
  Excel Maske zum ändern und anzeigen von Daten Mike4711 96 17.448 02.12.2014, 23:57
Letzter Beitrag: Mike4711
  Excel Maske zum anzeigen und ändern von Werten Mike4711 36 6.311 19.11.2014, 17:48
Letzter Beitrag: Mike4711

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste