eine neue Frage
18.09.2017 20:12:04
Marco
Guten Abend Piet, Franz und Yummi,
ich möchte mich nochmal bei euch für eure Hilfe bedanken. Beide Beispieldateien laufen wunderbar. Ich würde euch gerne noch etwas Fragen, wenn ich darf ansonsten mach ich einen neuen Beitrag auf.
In der Beispiel-Datei, ich nehme jetzt einfach mal die von Franz, wird die Materialnummer im Dashboard mit folgendem Code gesucht:
'Suche die Material Nummer in Dashboard Spalte "G9" - XXX
Set rFind = DSB.Range("G9", DBEdr).Find(What:=Material, After:=Range("G9"), LookIn:= _
xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
False)
If rFind Is Nothing Then MsgBox "Suchlauf Fehler" & vbLf & Station & " " & Material & _
" - nicht gefunden"
If Not rFind Is Nothing Then
'Bereichs Name zum Prüfen laden
Bereich = DSB.Cells(rFind.Row, "D").Value
dsbcol = rFind.Column + 1 'Material Spalte
'wenn vorhanden suche Station Name in diesem Bereich
'** Aussprung wenn next Bereich vorkommt!!
For j = rFind.Row + 1 To lzDsb
If Left(DSB.Cells(j, "D"), 7) = "Bereich" Then Exit For
'** If DSB.Cells(j, "E") = Station Then z = j: Exit For
If DSB.Cells(j, "D") = Station Or DSB.Cells(j, "E") = Station Then z = j: Exit For
Next j
If z = 0 Then MsgBox Bereich & ": " & Station & " nicht gefunden"
'wenn vorhanden Top 3 Fehler auflisten
If z > 0 And DSB.Cells(j, dsbcol) = Empty Then
'Schleife für Top 3 Fehler auflisten
'Aussprung bei Station oder Material
For j = 1 To 3
'Datum Text laden und verkürzen (ohne Jahr + sec.)
With .Cells(k, 2)
If IsDate(.Value) Then
DTxt = Format(CDate(.Value), "DD.MM. hh.mm")
Else
DTxt = .Text
End If
End With
If .Cells(k, 3) Station Then Exit For 'Station
If .Cells(k, 4) Material Then Exit For 'Material
DSB.Cells(z, dsbcol + 0) = .Cells(k, 6) 'Häufigkeit
'** neu: Fehler Text mit gekürztem Datum + Uhrzeit
'DSB.Cells(z, dsbcol + 1) = .Cells(k, 5) 'Old, ohne Zeit
'DSB.Cells(z, dsbcol + 1) = .Cells(k, 5) & Space(6) & DTxt
DSB.Cells(z, dsbcol + 1) = .Cells(k, 5) 'Old, ohne Zeit
.Cells(k, 7).Value = " Ok" 'ist notiert
z = z + 1: k = k + 1 'next Zeile
Next j
In der Zelle G9 steht z.B. die Materialnummer 110. Jetzt habe ich das Problem das sich die Materialnummer ändern kann und ich in der Data Base nach zwei Materialnummern z.B. 110 und 111 suchen muss wenn ich einen bestimmten Zeitraum eingebe in denen beide vorkommen könnten. Das Problem ist ich kann ja nicht mehrere Nummern in die Zelle G9 schreiben. Deswegen dachte ich mir verwende ich doch besser ein Array, anstatt G9 direkt ansprechen:
'Suche die Material Nummer in Dashboard Spalte "G9" - XXX
Set rFind = DSB.Range("G9", DBEdr).Find(What:=Material, After:=Range("G9"), LookIn:= _
xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
ein Array einbauen welches ich vorher deklariert habe also so:
MatNumber = Array(110, 111)
'Suche die Material Nummer in Array MatNumber
Set rFind = DSB.Range(MatNumber, DBEdr).Find(What:=Material, After:=Range(MatNumber), _
LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
Leider funktioniert mein Code so nicht. War mein Gedanke an der Stelle vielleicht falsch, dass das so gehen kann?
VG Marco
Beispiel Dateie: https://www.herber.de/bbs/user/116342.xlsm