Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1588to1592
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
VBA: 2 Kriterien in Liste vorhanden?
09.11.2017 11:00:23
Joshua
Hallo zusammen,
ich habe mich gerade ein wenig verrannt und benötige mal eure Hilfe.
Hier die Kurzfassung:
Es gibt zwei Textboxen auf einem Userform: Artikelnummer und Kunde! Nach der Eingabe des Kunden soll überprüft werden, ob die eingegebene Kombi aus Artikelnummer und Kunde bereits in dem Worksheet Fertigungsmatrix vorhanden ist. In der Fertigungsmatrix stehen in Spalte A die Artikelnummern und in Spalte B der Kunde. Es kann vorkommen, dass eine Artikelnummer mehrmals vorkommt, jeweils mit anderen Kunden in Spalte B.
Nachstehend noch eine ausführliche Erklärung.
Vielen Dank für eure Unterstützung.
Hier die Ausgangssituation:
Ich arbeite an einer Datei, die Fertigungsaufträge automatisch erstellt. Da diese für Leute gedacht ist, die so gut wie keine Excel-Kenntnisse haben, wird eigentlich alles über UserForms gesteuert.
In dieser Datei ist eine Tabelle als Fertigungsmatrix hinterlegt. Dort werden die spezifischen Eigenschaften von jedem Fertigungsauftrag der jeweiligen Artikelnummer zugeordnet.
Beim Erstellen von neuen Fertigungsaufträgen gibt man die benötigten variablen Daten zusammen mit der Artikelnummer ein.
Allerdings gibt es ein Feld auf den Fertigungsaufträgen, welches nicht nur von der Artikelnummer abhängig ist, sondern auch vom Kunden. D.h. in der Fertigungsmatrix gibt es eine Zeile bspw. Artikelnummer 1234 und Kunde A, eine mit Artikelnummer 1234 und Kunde B und eine Zeile mit Artikelnummer 1234 ohne Kunden. (In der Fertigungsmatrix steht in Spalte A die Artikelnummer und in Spalte B der Kunde)
Das Problem:
Bei der Eingabe des Kunden (findet statt, wenn Artikelnummer bereits eingegeben wurde) soll nun überprüft werden, ob die Kombination aus Artikelnummer und Kunde schon in der Fertigungsmatrix vorhanden ist oder nicht.
Mein bisheriger Ansatz war es, die Artikelnummer in Spalte A zu suchen und rechts daneben zu schauen, ob der Kunde eingetragen ist! Hierbei werden allerdings nachstehende Zeilen mit der gleichen Artikelnummer von der Suche ausgeschlossen.
Private Sub ArtNo_AfterUpdate()
Dim Artikelnummer As Range
'Tabelle Fertigungsmatrix nach bereits vorhandenen Artikeln durchsuchen
Set Artikelnummer = Worksheets("Fertigungsmatrix").Range("A2:A" &
Worksheets("Fertigungsmatrix"). _
Range("A" & Rows.Count).End(xlUp).Row).Find(What:=ArtNo.Text,
LookAt:=xlWhole, LookIn:=xlValues)
'Wenn Artikelnummer bereits vorhanden ist
If Not Artikelnummer Is Nothing Then
Exit Sub
'Wenn Artikel noch nicht vorhanden ist
Else
End If
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: 2 Kriterien in Liste vorhanden?
09.11.2017 11:10:14
Ralf
Hi Joshua,
nutze die FindNext- Methode:
Beispiel: https://msdn.microsoft.com/de-de/vba/excel-vba/articles/range-findnext-method-excel
AW: VBA: 2 Kriterien in Liste vorhanden?
09.11.2017 11:28:41
Joshua
Hallo Ralf,
erstmal vielen Dank für die schnelle Antwort.
Könntest du mir beim Einbau der Methode helfen?
Hier der Code für das Feld: (Oben hab ich den falschen genommen....)
Private Sub Kunde_AfterUpdate()
Dim Zeile As Long
Zeile = Worksheets("Fertigungsmatrix").Range("A:A").Find(What:=ArtNo.Text, _
LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, _
MatchCase:=False).Row
'Zeile = Worksheets("Fertigungsmatrix")
If Not Worksheets("Fertigungsmatrix").Range("B" & Zeile) = Kunde.Text Then
NewFA.NewArt.Left = 148
NewFA.NewArt.Top = 188.5
NewFA.NewArt.Height = 20
NewFA.NewArt.Visible = True
MsgBox "Bei dem von Ihnen angegebenen Artikel " & NewFA.ArtNo.Text & _
" sind keine Kundenspezifika für den Kunden " & NewFA.Kunde.Text & _
" angelegt. Wenn Sie diese anlegen möchten, klicken Sie bitte auf 'Neuen FA anlegen' _
End If
End Sub

Danke schonmal im Voraus.
Anzeige
AW: VBA: 2 Kriterien in Liste vorhanden?
09.11.2017 11:58:38
Ralf
... jetzt ungetestet und anpassungsbedürftig, quasi als Leitplanke... ;)
Private Sub Kunde_AfterUpdate()
Dim rng As Range, firstAddress As String, arrGefunden(1) As String, x As Integer, msg As String
With Worksheets("Fertigungsmatrix").Range("A:A")
Set rng = .Find(What:=ArtNo.Text, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows,  _
MatchCase:=False)
If Not rng Is Nothing Then
If rng.Offset(0, 1).Value = "Was soll denn in der Spalte daneben stehen?" Then 'also.... _
anpassen
firstAddress = rng.Address
arrGefunden(0) = rng.Address
x = x + 1
Do
Set rng = .FindNext(rng)
If Not rng Is Nothing Then
If rng.Offset(0, 1).Value = "Was soll denn in der Spalte daneben stehen?"  _
Then 'also.... anpassen
ReDim Preserve arrGefunden(x)
arrGefunden(x) = rng.Address
x = x + 1
End If
End If
Loop While Not rng Is Nothing And rng.Address  firstAddress
End If
End If
End With
If x > 0 Then
For x = 0 To UBound(arrGefunden()) - 1
msg = msg & arrGefunden(x) & vbCrLf ' Hir musst Du natürlich den Code an Deine  _
Bedürfnisse anpassen
Next
MsgBox msg
End If
End Sub

Anzeige
AW: VBA: 2 Kriterien in Liste vorhanden?
09.11.2017 12:29:47
Ralf
sorry... Korrektur... den Code des With Blocks bitte ersetzen durch diesen Code:

With Worksheets("Fertigungsmatrix").Range("A:A")
Set rng = .Find(What:=ArtNo.Text, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows,  _
MatchCase:=False)
If Not rng Is Nothing Then
firstAddress = rng.Address
If rng.Offset(0, 1).Value = "Was soll denn in der Spalte daneben stehen?" Then 'also.... _
anpassen
arrGefunden(0) = rng.Address
x = x + 1
End If
Do
Set rng = .FindNext(rng)
If Not rng Is Nothing Then
If rng.Offset(0, 1).Value = "Was soll denn in der Spalte daneben stehen?"  _
Then 'also.... anpassen
ReDim Preserve arrGefunden(x)
arrGefunden(x) = rng.Address
x = x + 1
End If
End If
Loop While Not rng Is Nothing And rng.Address  firstAddress
End If
End With

Anzeige

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige