20.02.2019, 15:23
(Dieser Beitrag wurde zuletzt bearbeitet: 20.02.2019, 16:57 von WillWissen.
Bearbeitungsgrund: Codetags
)
Hallo Zusammen
Ich hab ne Materiallsite (siehe Bild) mit Komponenten (Spalten A-D). Diese können zu mehreren Baugruppen (Spalte Q) gehören. Wenn man nun neue Baugruppe bsw. zum Mast1 Hinzufügen möchte, muss man in Q nach dieser Baugruppe filtern, aus einer separeten Baugruppenstückliste herauslesen wie viel Mal ein bestimmter Artikel in der Baugruppe vorhanden ist und entsprechen bei diesen Mast die Anzahl in der Spalte F dazuzählen.
Ich hab mir gedacht, das ganze könnte man mit mehreren Userforms einfacher und effizienter gestalten.
Die Eingabe-Userform hab ich berits (siehe Bild). In dieser kann die Baugruppe ausgewählt werden, die man hinzufügen möchte. In der Listbox darunter werden alle Masten angezeigt, wo man mehrere davon auswählen kann, wenn dieslebe Baugruppe an mehreren Mästen verbaut wird. Über Fortfahren gelangt man zur Userform der Baugruppe MAST1 (siehe Bild), bei welcher die einzelnen Komponeten sichtbar sein sollen und man die gewünschte Anzahl eingeben kann, welche dann am jeweiligen Mast aufsummiert resp. subtrahiert werden soll.
Bei einzelnen gibt es festgelegte Komponenten (siehe Beispiel MAST1) wie Fundamentschrauben, wo nur die Anzahl eingegeben werden muss, bei anderen muss zuerst der genaue Mast-Typ und die Mast-Länge angeben werden.
Über Hinzufügen / Entfernen werden dann bei den Komponeten und den angegebenen Masten die Anzahl aufssumiert oder abgezaählt.
Momentan stehe ich an dem Punkt an, wo ich bei der Baugruppe MAST1 das erste Kombinationsfeld füllen möchte mit allen Komponenten, welche den Text "Mast HEB" enthalten. Der Nutzer soll so den gewünshten Mast auswählen können und rechts die Anzahl eingeben. In einem nächsten Schritt soll gemäss der Auswahl der ersten Userform die Stückliste für bsw. die Masten 1,2 und 3 ausgefüllt werden.
Wenn das mit der Mehrfachauswahl der Masten (Spalten F-L) zu aufwändig sein sollte, ginge es auch, dass man die Baugruppe nur für einen Mast ausfüllt und dann zum nächsten übergeht.
Hier den Code den ich bereits habe:
Userform-Module (Eingabe)
Die Variable last2 ist in einen Modul las Public deklariert.
Hoffe jemand kann mir ein bisschen unter die Arme greifen.
Danke im Voraus
Ich hab ne Materiallsite (siehe Bild) mit Komponenten (Spalten A-D). Diese können zu mehreren Baugruppen (Spalte Q) gehören. Wenn man nun neue Baugruppe bsw. zum Mast1 Hinzufügen möchte, muss man in Q nach dieser Baugruppe filtern, aus einer separeten Baugruppenstückliste herauslesen wie viel Mal ein bestimmter Artikel in der Baugruppe vorhanden ist und entsprechen bei diesen Mast die Anzahl in der Spalte F dazuzählen.
Ich hab mir gedacht, das ganze könnte man mit mehreren Userforms einfacher und effizienter gestalten.
Die Eingabe-Userform hab ich berits (siehe Bild). In dieser kann die Baugruppe ausgewählt werden, die man hinzufügen möchte. In der Listbox darunter werden alle Masten angezeigt, wo man mehrere davon auswählen kann, wenn dieslebe Baugruppe an mehreren Mästen verbaut wird. Über Fortfahren gelangt man zur Userform der Baugruppe MAST1 (siehe Bild), bei welcher die einzelnen Komponeten sichtbar sein sollen und man die gewünschte Anzahl eingeben kann, welche dann am jeweiligen Mast aufsummiert resp. subtrahiert werden soll.
Bei einzelnen gibt es festgelegte Komponenten (siehe Beispiel MAST1) wie Fundamentschrauben, wo nur die Anzahl eingegeben werden muss, bei anderen muss zuerst der genaue Mast-Typ und die Mast-Länge angeben werden.
Über Hinzufügen / Entfernen werden dann bei den Komponeten und den angegebenen Masten die Anzahl aufssumiert oder abgezaählt.
Momentan stehe ich an dem Punkt an, wo ich bei der Baugruppe MAST1 das erste Kombinationsfeld füllen möchte mit allen Komponenten, welche den Text "Mast HEB" enthalten. Der Nutzer soll so den gewünshten Mast auswählen können und rechts die Anzahl eingeben. In einem nächsten Schritt soll gemäss der Auswahl der ersten Userform die Stückliste für bsw. die Masten 1,2 und 3 ausgefüllt werden.
Wenn das mit der Mehrfachauswahl der Masten (Spalten F-L) zu aufwändig sein sollte, ginge es auch, dass man die Baugruppe nur für einen Mast ausfüllt und dann zum nächsten übergeht.
Hier den Code den ich bereits habe:
Userform-Module (Eingabe)
Code:
Option Explicit
Private Sub CommandButton_Cancel_Click()
'Formular schliessen
Unload UserForm_Module
End Sub
Private Sub CommandButton_Forward_Click()
'Zeigt Userform für Baugruppe MAST1 an
If UserForm_Module.ComboBox1.Value = "MAST1" Then
UserForm_Module.Hide
UserForm_Mast1.Show
'Zeigt Userform für Baugruppe MAST7 an
'ElseIf UserForm_Module.ComboBox1.Value = "MAST7" Then
'UserForm_Module.Hide
'UserForm_Mast7.Show
'...
'...
'...
Else:
'Wenn keine Baugruppe ausgewählt wurde, soll Meldung erscheinen
MsgBox "Es wurde keine Baugruppe ausgewählt."
End If
End Sub
Private Sub UserForm_Initialize()
'Bereitstellung der Baugruppen für Auswahl
Worksheets("Werte").Activate
UserForm_Module.ComboBox1.RowSource = "A1:A9"
UserForm_Module.ComboBox1.ListIndex = 0
'Suche nach Ende der vorhanden Masten um Masten-Listbox zu füllen
Worksheets("Daten").Activate
Dim strString1 As String, rngCell1 As Range
strString1 = "Bestellung"
Set rngCell1 = Rows(1).Find(strString1, lookat:=xlWhole, LookIn:=xlValues, MatchCase:=True)
'Speichert Range der vorhandenen Masten
Dim last1 As String
last1 = "G2:" & rngCell1.Address
'Verschiebt Range um eine Spalte nach links
UserForm_Module.ListBox1.List = Application.Transpose(Range(last1).Offset(1, -1).Value)
'Speichert Range für Listbox mit Mehrfachauswahl
ListBox1.ListStyle = fmListStyleOption
ListBox1.MultiSelect = fmMultiSelectMulti
'Sucht nach Baugruppen-Spalte für Autofilter
Dim strString2 As String, rngCell2 As Range
strString2 = "Baugruppen"
Set rngCell2 = Rows(2).Find(strString2, lookat:=xlWhole, LookIn:=xlValues, MatchCase:=True)
'Speichert Nummer der Baugruppen-Spalte für Autofilter
last2 = rngCell2.Column
End Sub
Und hier derjenige der Baugruppe MAST1:
Option Explicit
Private Sub CommandButton_Back_Click()
UserForm_Mast1.Hide
UserForm_Module.Show
End Sub
Private Sub CommandButton_Cancel_Click()
'Zeigt alle Komponenten wieder an
ActiveSheet.ShowAllData
'Formular schliessen
Unload UserForm_Mast1
End Sub
Sub UserForm_Initialize()
ActiveSheet.Range("A2;T801").AutoFilter last2, UserForm_Module.ComboBox1.Value
'Sucht nach "Mast HEB"-Zellen für Ausfüllen/Entfernen
Dim finden As Range
Set finden = Columns(4).Find(what:="*Mast HEB*")
MsgBox finden.Address
End Sub
Die Variable last2 ist in einen Modul las Public deklariert.
Hoffe jemand kann mir ein bisschen unter die Arme greifen.
Danke im Voraus