Automatisierte Stücklisten-Eintragung
#1
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)

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


Angehängte Dateien Thumbnail(s)
               
Antworten Top
#2
Hallo,

kannst du das ganze mal bitte in einer Beispiel hochladen?


Sind es bei bestimmten Masten immer die gleichen Bauteile? Wenn ja, würde ich mir PreSets bauen, in denen für jeden Mast die Bauteile entahlten sind. Dann reicht ein Klick auf den Mast, und man erhält alle Bauteile, oder habe ich da etwas falsch verstanden?
Antworten Top
#3
Hier das Excel.


Angehängte Dateien
.xlsm   Materialliste für Macros.xlsm (Größe: 1,3 MB / Downloads: 13)
Antworten Top
#4
@Silvr Ja/ein. Mein Ziel ist es die Baugruppen als PreSets zu haben, dann innerhalb der Presets noch genauere Angaben treffen zu können wie Typ, Länge, Anzahl und dass dieses Baugruppen-Preset dann an einem (oder mehreren) Masten aufsummiert wird.
Antworten Top
#5
20.02.2019
Antworten Top
#6
Keiner ne Idee dazu?
Antworten Top
#7
Heje Excelfreunde,

vielleicht ist es hilfreich, ein Tabelle "Parameterliste" anzuhängen. In dieser Tabelle dann die einzelnen Materiallisten (Zusammenstellungen
je Baugruppe) als Matrizen zu definieren (über Namensmanager) und dann auf diese über ihren Namen (Bsp. Mast1) zugreifen und durch
Mengenangaben, etc. zu ergänzen. Sonderbauformen mit bedenken. ("Nicht zuviel Tabellenwerk erstellen, ggf. erst einmal das Ergebnis
(Form, Druckausgabe etc. definieren").

Soll heißen, wie muss/soll das Ergebnis (der Fokus) aussehen, um dann Schritt für Schritt das Problem rückwärts zu entwickeln. Materiallisten
und so weiter nur behelfsweise erstellen. Diese erst zum Schluss vollständig erstellen. Dabei ist zu beachten, dass sich diese in ihrer Zusammensetzung verändern kann...
Vielen Dank
--Janosch
                                                     
Excel  2019 (64bit)  Win 10 Pro (64bit)                              
Antworten Top


Gehe zu:


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