ich kann nur hoffen, dass jemand von euch Profis die Zeit und Lust hat, sich in mein Anliegen reinzudenken, und mir damit ein riesiges Geschenk machen würde. Stehe ehrlich gesagt kuz vorm Nervenzusammenbruch.
Bin aber auch totale Anfängerin.
Irgednwie kann ich allerdings meine Datei nicht hochgeladen für den Fall, dass mir jemand helfen möchte, würde ich sie gerne per E-Mail verschicken oder vielleicht hat jemand eine Idee wie ich sie sonst verlinken könnte.
Mein wichtigstes Anliegen ist die
Userform 3:
- über einen Button wird die Userform3 direkt geöffnet, welche zur reinen Suche und Ändern von Daten dienen soll.
Darin enthalten sind:
5 Textboxen
3 Comboboxen
1 Listbox
- Die Suchfunktion über die ersten beiden Textboxen "Zeilen-Nr."-Eingabe und "LV-Nr." -Eingabe funktioniert soweit. Die Daten werden in fast alle Boxen ausgelesen und ändern kann ich sie soweit auch.
Ich würde nun gerne über die Combobox1 (Fabrikat), Combobox2 (Kategorie) und Combobox3 (Gewerk) und Textbox3 eine weitere Suchfunktion einbauen.
Das heisst, wenn ich eine bestimmte Kategorie in der Combobox2 wähle, sollen alle anderen Boxen weiter gefiltert werden auf alle Zeilen, welche der jeweiligen Kategorie (aus der Combobox2 beispw.) zugeordnet ist. Diese Funktion soll auch im umgekehrten Fall bei allen anderen Boxen funktionieren. Ich würde dann gerne über die anderen Comboxen die Suchfunktion weiter einschränken können.
Also im Prinzip soll es ähnlich funktionieren wie die Autofilter-Funktion im Arbeitsblatt "Kalkulation".
Sobald die erste Suchfunktion über eine Combobox aktiviert wird, sollen alle Zeilen welcher der jeweiligen Auswahl der Combox zugeordnet sind, in der Listbox angezeigt werden.
Die Listbox soll aktualisiert werden, sobald die Suchfunktion weiter eingeschränkt wird. In die Listbox sollen nur die Spalten F und G ab Zeile 5 bis Tabellenende aus dem Worksheet "Kalkulation" ausgelesen werden.
Dann würde ich gerne über die Textbox3 auch durch Eingabe von Teilbegriffen (Suche in Spalte G, Zeile je nach Länge der Tabelle) eine entsprechende Auswahlmöglichkeit in die Listbox bekommen, auch wieder genauso wie bei dem Autofilter im Arbeitsblatt
Über die Listbox soll dann der gewünschte Artikel gewählt werden. Die Auswahl aus der Listbox soll dann in allen anderen Boxen wiederum ausgelesen bzw. angezeigt werden.
Ein weiterer Wunsch betrifft das Auslesen der Textbox 9. Hier soll der Preis ausgelesen werden, an dem der Eintrag aus Spalte D mit dem jeweiligen Lieferanten aus den verbunden Zeilen 1 + 2 übereinstimmen.
Also sprich: In Zeile 5 steht in Spalte D der Eintrag "B". Dieser Eintrag stimmt überein mit dem Lieferanten "B" aus Spalte "P1-U2" (Verbundene Zellen). In dem Fall soll der EK-Preis aus der jeweiligen Zeile ("S5") ausgelesen werden.
Wenn in Zeile D6 der Eintrag "A" steht und dieser übereinstimmt mit Lieferant "A" aus Spalte "J1-O2" (auch wieder verbundene Zellen), soll der Wert aus Zelle M6 ausgelesen werden.
In der Textbox6 soll der günstigste Preis aus allen erfassten Einträgen der jeweils ausgewählten Zeile ermittelt und entsprechend ausgelesen werden.
Und eine Frage hätte ich dann noch:
Ist es möglich dass eine MSG-Box angezeigt wird, sofern der gewünschte Eintrag über die Suche LV-Nr und Zeilen-Nr. (Textbox 1 und Textbox2) nicht gefunden wird?
Ich glaube das alles ist mega kompliziert. Habe alles mögliche versucht. Bekomme es absolut nicht hin. Würde gerne meine Datei bereitstellen aber weiss momentan nicht wie.
Ich wüsste nicht wie ich danken könnte, wenn mir jemand hierbei helfen könnte.
Dies ist mein bisheriger Code aus der Userform 3
'Sucheingabe nach Zeilen-Nr.
Private Sub TextBox1_Change()
Dim varTMP As Variant
On Error GoTo Fin
If Not Trim(TextBox1.Text) = "" Then
With Tabelle2
varTMP = Application.Match(CLng(TextBox1.Text), .Range("A:A"), 0)
If Not IsError(varTMP) Then
Me.Tag = varTMP
TextBox2.Text = .Cells(varTMP, 6).Value
TextBox3.Text = .Cells(varTMP, 7).Value
TextBox6.Text = .Cells(varTMP, 10).Value
ComboBox2.Text = .Cells(varTMP, 5).Value
'TextBox9.Text = Right(Sheets(2).Cells(varTMP, 9).Text, 15)
TextBox11.Text = .Cells(varTMP, 4).Value
ComboBox1.Text = .Cells(varTMP, 3).Value
ComboBox3.Text = .Cells(varTMP, 2).Value
Else
Me.Tag = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox6.Text = ""
ComboBox2.Text = ""
'TextBox9.Text = ""
TextBox11.Text = ""
ComboBox1.Text = ""
ComboBox3.Text = ""
End If
End With
Else
TextBox2.Text = ""
TextBox3.Text = ""
TextBox6.Text = ""
ComboBox2.Text = ""
'TextBox9.Text = ""
TextBox11.Text = ""
ComboBox1.Text = ""
ComboBox3.Text = ""
End If
Fin:
If Err.Number 0 Then MsgBox "Error: " & _
Err.Number & " " & Err.Description
End Sub
'Sucheingabe nach LV-Nr.:Private Sub TextBox2_Change()
Dim varTMP As Variant
On Error GoTo Fin
If Not Trim(TextBox2.Text) = "" Then
With Tabelle2
varTMP = Application.Match(TextBox2.Text, .Range("F:F"), 0)
If Not IsError(varTMP) Then
Me.Tag = varTMP
TextBox1.Text = .Cells(varTMP, 1).Value
TextBox3.Text = .Cells(varTMP, 7).Value
TextBox6.Text = .Cells(varTMP, 10).Value
ComboBox2.Text = .Cells(varTMP, 5).Value
'TextBox9.Text = Right(Sheets(2).Cells(varTMP, 9).Text, 15)
TextBox11.Text = .Cells(varTMP, 4).Value
ComboBox1.Text = .Cells(varTMP, 3).Value
ComboBox3.Text = .Cells(varTMP, 2).Value
Else
Me.Tag = ""
TextBox1.Text = ""
TextBox3.Text = ""
TextBox6.Text = ""
ComboBox2.Text = ""
'TextBox9.Text = ""
TextBox11.Text = ""
ComboBox1.Text = ""
ComboBox3.Text = ""
End If
End With
Else
TextBox1.Text = ""
TextBox3.Text = ""
TextBox6.Text = ""
ComboBox2.Text = ""
'TextBox9.Text = ""
TextBox11.Text = ""
ComboBox1.Text = ""
ComboBox3.Text = ""
End If
Fin:
If Err.Number 0 Then MsgBox "Error: " & _
Err.Number & " " & Err.Description
End Sub
'Eingaben / Änderungen speichern
Private Sub CommandButton1_Click()
Dim lngRow As Long
On Error GoTo Fin
If Trim(TextBox1.Text) "" And Trim(TextBox2.Text) "" Then
If Me.Tag "" Then
With Tabelle2
.Cells(Me.Tag, 1).Value = CLng(TextBox1.Text)
.Cells(Me.Tag, 6).Value = TextBox2.Text
.Cells(Me.Tag, 7).Value = TextBox3.Text
'.Cells(Me.Tag, 10).Value = TextBox6.Text
.Cells(Me.Tag, 5).Value = ComboBox2.Text
'.Cells(Me.Tag, 9).Value = CCur(TextBox9.Text)
.Cells(Me.Tag, 4).Value = TextBox11.Text
.Cells(Me.Tag, 3).Value = ComboBox1.Text
.Cells(Me.Tag, 2).Value = ComboBox3.Text
End With
Else
With Tabelle2
lngRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Cells(lngRow, 1) = CLng(TextBox1.Text)
.Cells(lngRow, 6) = TextBox2.Text
.Cells(lngRow, 7) = TextBox3.Text
'.Cells(lngRow, 10) = TextBox6.Text
.Cells(lngRow, 5) = ComboBox2.Text
'.Cells(lngRow, 9) = CCur(TextBox9.Text)
.Cells(lngRow, 4) = TextBox11.Text
.Cells(lngRow, 3) = ComboBox1.Text
.Cells(lngRow, 2) = ComboBox3.Text
End With
End If
TextBox1.Text = ""
TextBox2.SetFocus
Else
MsgBox ("Keine Eingabe!"), vbExclamation, _
" Keine Eingabe."
TextBox1.SetFocus
End If
Fin:
If Err.Number 0 Then MsgBox "Error: " & _
Err.Number & " " & Err.Description
End Sub
Ich hätte noch soviele Fragen aber ich traue mich nicht weiter, weil das hier schon genug Text ist. Ich kann nur hoffen, dass mir jemand in dieser Sache helfen kann.
Ganz liebe Grüße
Sebi