AW: Suchfunktion Userform
07.08.2019 15:43:21
Matthias
Moin!
Das Problem war schon klar :-) wußte nur nicht, ob es Sinn macht. Hier mal der Code aus der UF. Konnte die Datei jetzt nicht hochladen, da sie mir nach dem Abspeichern gecrasht ist. Habe den Code für Ein. und Ausbuchen angepasst. Dazu wird die Liste jetzt mit 2 Spalten gefüllt, wobei nur die erste angezeigt wird. In der zweiten Spalte ist die Zeilennummer hinterlegt. Damit die Felder mit der 0 nicht angezeigt werden, nehme ich die letzte Zeile aus Spalte 3. Wenn du also ein neues Element im Cockpit einfügst, dann in Spalte C eine 0 eintragen. Kannst es aber auch auf Spalte 1 umstellen, dann sind in dem Code die Zeilen mit 0 auch drin. Hier jetzt mal der ganze Code:
Option Explicit
Private Sub Button_Eingang_Click()
'On Error Resume Next
'Blattschutz beim Klicken des Button aufheben
Worksheets("Eingang").Unprotect Password:="123456"
Worksheets("Cockpit").Unprotect Password:="123456"
If TextBox_MengeEin.Value = "" Or ListBox_Material.List(ListBox_Material.ListIndex) = "" Or _
ComboBox_Prozent.Value = "" Then
MsgBox "Zum Buchen von Wareneingängen ,muss ein Material,die Menge und Lieferung in Prozent _
ausgewählt werden!"
Exit Sub
'die Sub wird verlassen, ohne dass das Userform geschlossen wird!
End If
'Abfrage ob Daten korrekt
If MsgBox("Sind die eingetragenen Werte korrekt?", vbOKCancel) = vbOK Then
If TextBox_MengeEin.Value >= "1" Then
'Erste freie Zeile ausfindig machen
Dim last As Integer
last = Sheets("Eingang").Cells(Rows.Count, 1).End(xlUp).Row + 1
'Material
Sheets("Eingang").Cells(last, 1).Value = ListBox_Material.List(ListBox_Material. _
ListIndex)
'Wareneingang
Sheets("Eingang").Cells(last, 2).Value = TextBox_MengeEin.Value
'Akteuelle Datum
Sheets("Eingang").Cells(last, 3).Value = VBA.Date
End If
Else
MsgBox "Vorgang abgebrochen!", vbCritical
Exit Sub
End If
'-------------Verknüpfung der ListBox mit der Datenbank und Anpassung der Bestände-------------- _
Sheets("Cockpit").Select
Dim n As Integer, k As Integer
k = Me.ListBox_Material.List(Me.ListBox_Material.ListIndex, 1)
On Error Resume Next
Range("C" & k).Value = Range("C" & k).Value + TextBox_MengeEin.Value
Range("I" & k).Value = ComboBox_Prozent.Value + Range("I" & k).Value
If Range("I" & k).Value >= 100 Then
MsgBox "Bestellung ist vollständig!", vbOKOnly
End If
'----------------------------------------------------------------------------------------------- _
'---Schleife zum markieren der Bestandsfarben
Dim ivariable As Integer
ivariable = 2
Do
If Range("C" & ivariable).Value = "1" Or TextBox_Kostenstelle >= "1" Then
'Erste freie Zeile ausfindig machen
'Erste freie Zeile ausfindig machen
Sheets("Ausgang").Select
Dim last2 As Integer 'Variable last2 beachten
last2 = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
'Material
Cells(last2, 1).Value = ListBox_Material.Value
'Wareneingang
Cells(last2, 2).Value = TextBox_MengeAus
'Kostenstelle
Cells(last2, 3).Value = TextBox_Kostenstelle
'Akteuelle Datum
Cells(last2, 4).Value = VBA.Date
End If
Else
MsgBox "Vorgang abgebrochen!", vbCritical
Exit Sub
End If
'-------------Verknüpfung der ListBox mit der Datenbank und Anpassung der Bestände-------------- _
Sheets("Cockpit").Select
Dim n As Integer, k As Integer
k = Me.ListBox_Material.List(Me.ListBox_Material.ListIndex, 1)
On Error Resume Next
Range("C" & k).Value = Range("C" & k).Value - TextBox_MengeAus.Value
Range("C" & k).Select
'----------------------------------------------------------------------------------------------- _
'---Schleife zum markieren der Bestandsfarben
Dim ivariable As Integer
ivariable = 2
Do
If Range("C" & ivariable).Value
VG