Userform Suche mit 2 Kriterien
#1
Hallo liebes Forum,

ich habe eine (hoffentlich) vorerst letzte Frage an euch.

Ich eine Userform die nach einer Rechnungsnummer sucht und mir anschließend verschiedene Textboxen befüllt.

PHP-Code:
Dim rZelle As Range
Dim sSuchbegriff
As String
Dim strErsteAdr
As String

sSuchbegriff
= Rechnung.TextBox3

With ListBox1
 
.ColumnCount = 4
 
.Clear
End With

With ThisWorkbook
.Worksheets("Umsatzliste")
  Set rZelle = .Columns(5).Find(What:=sSuchbegriff, Lookat:=xlWhole, LookIn:=xlValues)
   
 
If Not rZelle Is Nothing Then
     
'erste Fundstelle merken (verhindert Endlosschleife)
     strErsteAdr = rZelle.Address
     
     Do '
Schleife über alle Fundstellen
   
     
'In Listbox eintragen
        ListBox1.AddItem " "
       
        ListBox1.ColumnWidths = "200 Pt;100 Pt;100 Pt;100 Pt"
                         
        ListBox1.List(ListBox1.ListCount - 1, 0) = .Range("F" & rZelle.Row).Value '
Material
        ListBox1
.List(ListBox1.ListCount - 1, 1) = .Range("G" & rZelle.Row).Value 'Menge
        ListBox1.List(ListBox1.ListCount - 1, 2) = .Range("H" & rZelle.Row).Value '
Einheit
        ListBox1
.List(ListBox1.ListCount - 1, 3) = .Range("I" & rZelle.Row).Value 'Preis / Einheit
        ListBox1.List(ListBox1.ListCount - 1, 3) = Format(ListBox1.List(ListBox1.ListCount - 1, 3), "#,##0.00 €")
                         
     '
nächste Fundstelle aufsuchen
        Set rZelle
= .Columns(5).FindNext(rZelle)
         
     Loop
While rZelle.Address <> strErsteAdr
     
  End
If
   
End With

Set rZelle
= Nothing

End Sub
Nun kann es aber sein dass eine Rechnungsnummer von 2 verschiedenen Lieferanten benutzt wird und somit die eingetragenen Werte zusammengefügt in der Userform erscheinen.

Wie müsste ich den Code abändern, das er mir zusätzlich das Rechnungsdatum aus Textbox 4 in Spalte B vergleicht und nur bei Übereinstimmung beider Kriterien die Userform entsprechend ausfüllt?

Vielen Dank nochmals

Thomas
Top
#2
Hallo Thomas,

bei Suchen, die mehrere Treffer liefern können, schreibe ich die Ergebnisse in eine Listbox, wo ich dann die Feinauswahl treffen kann.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
[-] Folgende(r) 1 Nutzer sagt Danke an Klaus-Dieter für diesen Beitrag:
  • Thomas78
Top
#3
Hi Thomas
 
Zitat:Nun kann es aber sein dass eine Rechnungsnummer von 2 verschiedenen Lieferanten benutzt wird.
zusätzlich das Rechnungsdatum aus Textbox 4 in Spalte B vergleicht.

Ist den dann 100% ausgeschlossen das Rechnungsdatum nicht auch vom selben Tag sein kann?
Wenn ja dann evtl. so etwas vor dem Ausfüllen.

Code:
If .Range("B" & rZelle.Row).Value = Textbox Then

Gruß Elex
[-] Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:
  • Thomas78
Top
#4
@ Klaus-Dieter

Das ist eine schöne Möglichkeit die ich in einer anderen Userform nutze. Leider nützt es mir hier nichts, da ich mit einem Doppelklick auf eine Rechnung deren Daten sehen will.
Trotzdem vielen Dank !

@ Elex

Das ist genau das was ich gestern selbst noch ausprobiert hatte, leider habe ich den Code wohl immer an der falschen Stelle eingefügt (war aber auch schon spät, ich probiers heute nochmal).

Auch dir vielen Dank !

Schöne Grüße

Thomas
Top
#5
So ich habs jetzt geändert, so dass der Kundenname verglichen wird. damit dürften Doppelanzeigen ausgeschlossen sein.

Hier noch der Code falls es wen interessiert:

PHP-Code:
With ThisWorkbook.Worksheets("Umsatzliste")
  Set rZelle = .Columns(5).Find(What:=sSuchbegriff, Lookat:=xlWhole, LookIn:=xlValues)
   
 
If Not rZelle Is Nothing Then
     
'erste Fundstelle merken (verhindert Endlosschleife)
     strErsteAdr = rZelle.Address
   
     Do '
Schleife über alle Fundstellen
       
If .Range("D" & rZelle.Row).Value <> TextBox1.Value Then                      'Wenn Kunde / Lieferant nicht gleich dann
        GoTo LastLine
        Else
        '
In Listbox eintragen
               
        ListBox1
.ColumnWidths = "200 Pt;100 Pt;100 Pt;100 Pt"
       
        ListBox1
.AddItem " "
                         
           ListBox1
.List(ListBox1.ListCount - 1, 0) = .Range("F" & rZelle.Row).Value 'Material
           ListBox1.List(ListBox1.ListCount - 1, 1) = .Range("G" & rZelle.Row).Value '
Menge
           ListBox1
.List(ListBox1.ListCount - 1, 2) = .Range("H" & rZelle.Row).Value 'Einheit
           ListBox1.List(ListBox1.ListCount - 1, 3) = .Range("I" & rZelle.Row).Value '
Preis / Einheit
           ListBox1
.List(ListBox1.ListCount - 1, 3) = Format(ListBox1.List(ListBox1.ListCount - 1, 3), "#,##0.00 €")
       
       
'nächste Fundstelle aufsuchen
LastLine:
        Set rZelle = .Columns(5).FindNext(rZelle)
        End If
   
     Loop While rZelle.Address <> strErsteAdr

  End If
   
End With


Danke an alle !

Thomas
Top


Gehe zu:


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