AW: Problem selber gelöst. Angriff auf nächstes
06.11.2014 13:13:20
fcs
Hallo Dusan,
da sind jetzt jede Menge zusätzliche Prüfschritte erforderlich und die die Arti-Nr im MW-Blatt müssen in 2 geschachtelten For-Next-Schleifen abgearbitet werden, um die Mehrfachnummern korrekt zu erfassen.
Gruß
Franz
Private Sub CommandButton2_Click()
'Vergleich MW-Blatt mit Monat
Dim wksMW As Worksheet, arrMW() As Boolean
Dim wksMonat As Worksheet
Dim Zeile_MW As Long, Zeile_MW2 As Long, Zeile_MW_L As Long
Dim Zeile_Monat As Long
Dim rngSuche As Range, rngVergleich As Range
Dim strNr As String, strP As String, SpalteMW As Long
If Me.ListBox2.ListIndex = -1 Then
MsgBox "Bitte erst einen Monat in der Listbox auswählen!", , _
"Vergleich Monat-MW-Blatt"
Exit Sub
End If
If Me.ListBox3.ListIndex = -1 Then
MsgBox "Bitte erst einen MW-Blatt in der Listbox auswählen!", , _
"Vergleich Monat-MW-Blatt"
Exit Sub
End If
Set wksMonat = ActiveWorkbook.Worksheets(Me.ListBox2.Value)
Set wksMW = ActiveWorkbook.Worksheets(Me.ListBox3.Value)
If MsgBox("Blatt """ & wksMW.Name & """ vergleichen mit Blatt """ _
& wksMonat.Name & """?", _
vbOKCancel, "Blatt-Vergleich Monat-MW") = vbCancel Then Exit Sub
With wksMW
'letzte Datenzeile in Spalte A des MW-Blattes
Zeile_MW_L = .Cells(.Rows.Count, 1).End(xlUp).Row
'Array für Bearbeitungsstatus anlegen
ReDim arrMW(2 To Zeile_MW_L)
'Zeilen im MW-Blatt abarbeiten
For Zeile_MW = 2 To Zeile_MW_L
'prüfen, ob Auftr-Nr. schon übertragen
If arrMW(Zeile_MW) = False Then
strNr = .Cells(Zeile_MW, 1).Text
'Datenbereich mit Auftragsnummern im Monatsblatt
With wksMonat
Set rngVergleich = .Range(.Cells(5, 1), .Cells(.Rows.Count, 1).End(xlUp))
End With
'Auftragsnummer im Monatsblatt suchen
Set rngSuche = rngVergleich.Find(What:=strNr, LookIn:=xlValues, _
lookat:=xlWhole)
If Not rngSuche Is Nothing Then
Zeile_Monat = rngSuche.Row
'Zeilen bis zum Listenende im MW nach der Auftr-Nr durchsuchen
For Zeile_MW2 = Zeile_MW To Zeile_MW_L
If .Cells(Zeile_MW2, 1).Text = strNr Then
If Zeile_MW2 > Zeile_MW Then
'Leerzeile einfügen
Zeile_Monat = Zeile_Monat + 1
wksMonat.Rows(Zeile_Monat).Insert shift:=xlShiftDown
'wksMonat.Cells(Zeile_Monat, 1).Value = strNr 'Art-Nr eintragen
End If
'Zellen B bis F in Zeile nach Monatsblatt Spalte K:O kopieren
.Range(.Cells(Zeile_MW2, 2), .Cells(Zeile_MW2, 6)).Copy _
wksMonat.Cells(Zeile_Monat, 11)
'Text in Zellen G bis K zusammenfassen
strP = .Cells(Zeile_MW2, 7).Text
For SpalteMW = 8 To 11
strP = strP & " " & .Cells(Zeile_MW2, SpalteMW).Text
Next
'Text in Spalte P des Monatsblatt eintragen
wksMonat.Cells(Zeile_Monat, 16).Value = strP
arrMW(Zeile_MW2) = True 'Zeile in MW-Blatt als bearbeitet merken
End If
Next
End If
End If
Next
End With
End Sub