Hallo Rudolf,
das folgende Makro musst du in ein
Standard Modul deiner Arbeitsmappe kopieren:
Sub Nummern_loeschen()
Dim arrNummern As Variant
Dim arrSuch(9) As Variant
Dim lngZaehler As Long
Dim lnggeloescht As Long
Dim j As Long
Dim i As Long
'Suchnummern in Array einlesen
For i = 0 To 9
If IsEmpty(ThisWorkbook.Worksheets("RE").Cells(16 + 2 * i, 3)) = False Then
arrSuch(lngZaehler) = ThisWorkbook.Worksheets("RE").Cells(16 + 2 * i, 3)
lngZaehler = lngZaehler + 1
End If
Next i
'Suche
For i = LBound(arrSuch) To lngZaehler - 1
'Alle Rechnungsnummern in Array einlesen
With ThisWorkbook.Worksheets("Artikel")
arrNummern = .Range(.Cells(2, 8), .Cells(.Cells(Rows.Count, 8).End(xlUp).Row, 8))
End With
'Array mit Nummern durchlaufen
For j = LBound(arrNummern) To UBound(arrNummern)
If arrSuch(i) = arrNummern(j, 1) Then
ThisWorkbook.Worksheets("Artikel").Cells(j + 1, 1).EntireRow.Delete 'Zeile mit gefundener Nummer löschen
lnggeloescht = lnggeloescht + 1 'Zähler für gelöschte Datensätze
Exit For 'diese Schleife verlassen
End If
Next j
Next i
'Abschlussmeldung
MsgBox "Es wurden " & lnggeloescht & " Rechnungsnummern gelöscht"
End Sub
Das Makro löscht die ganze Zeile, wenn eine Übereinstimmung gefunden wurde. Zum Abschluss des Makros erhälst du eine Mitteilung, wieviel Datensätze (Zeilen) gelöscht wurden.
Dieses Makro musst du nach dem Drucken mit Hand starten. Willst, du dass das Makro automatisch nach dem Drucken startet, so kopiere das folgende Makro in das
VBA-Projekt deiner Arbeitsmappe:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
'Makro zum Löschen der Nummern nur dann aufrufen, wenn Tabellenblatt RE gedruckt wird
If ActiveSheet.Name = "RE" Then
'nach 10 Sekunden wird das Makro zum Löschen der Nummern aufgerufen
Application.OnTime Now + TimeValue("00:00:10"), "Nummern_loeschen"
End If
End Sub
Damit wird das Makro 10 Sekunden nach Aufrufen des Druckbefehls ausgeführt.
Die Arbeitsmappe musst du als xlsm-Datei abspeichern. Beachte bitte auch, dass ggf. die Ausführung von Makros zugelassen werden muss (siehe obige Links).
Probiere das Makro aber erst einmal in einer Testdatei aus.
Gruß
M.O.