Wenn im Register "Daten" und in der Spalte "N" unter der jeweiligen RNr. gedruckt stehen, dann sollte auch im Register "Betrag" in der Spalte "F" zu der jeweiligen RNr. auch gedruckt stehen.
05.02.2025, 16:11 (Dieser Beitrag wurde zuletzt bearbeitet: 05.02.2025, 16:13 von Gast 123.)
Hallo
kein Problem, habe den Code erweitert. Bitte an die neue Spalte für Print in "Betrag" denken!
mfg Gast 123
Code:
Sub DruckeBereich() Dim ReNr As Variant ReNr = Sheets("Vorlage").Range("A10")
'Prüfung ob diese Rechnung existiert? Set rfind = Sheets("Daten").Range("Tabelle2[[RNr.]]").Find(what:=ReNr) If rfind Is Nothing Then MsgBox "Diese Rechnung fehlt in 'Daten'!", vbCritical: Exit Sub
'Prüfung ob diese Rechnung in Betrag existiert? Set rfind = Sheets("Betrag").Range("Tabelle1[[RNr.]]").Find(what:=ReNr) If rfind Is Nothing Then MsgBox "Diese Rechnung fehlt in 'Betrag'!", vbCritical: Exit Sub
'Prüfung ob diese Rechnung schon gedruckt wurde? If Sheets("Daten").Range("Tabelle2[[Print]]").Cells(rfind.Row - 1, 1) = "gedruckt" Then MsgBox "Diese Rechnung wurde bereits gedruckt!", vbInformation: Exit Sub End If
'** Range auf Spalte F erweitern?? Range("A1:F47").PrintOut Copies:=1
'Druckvermerk in Daten notieren Set rfind = Sheets("Daten").Range("Tabelle2[[RNr.]]").Find(what:=ReNr) Sheets("Daten").Range("Tabelle2[[Print]]").Cells(rfind.Row - 1, 1) = "gedruckt"
'Druckvermerk in Betrag notieren Set rfind = Sheets("Betrag").Range("Tabelle1[[RNr.]]").Find(what:=ReNr) Sheets("Betrag").Range("Tabelle1[[Print]]").Cells(rfind.Row - 1, 1) = "gedruckt" End Sub
Sub DruckeBereich() Dim ReNr As Variant ReNr = Sheets("Vorlage").Range("A10")
'Prüfung ob diese Rechnung existiert? Set rfind = Sheets("Daten").Range("Tabelle2[[RNr.]]").Find(what:=ReNr) If rfind Is Nothing Then MsgBox "Diese Rechnung fehlt in 'Daten'!", vbCritical: Exit Sub
'Prüfung ob diese Rechnung in Betrag existiert? Set rfind = Sheets("Betrag").Range("Tabelle1[[RNr.]]").Find(what:=ReNr) If rfind Is Nothing Then MsgBox "Diese Rechnung fehlt in 'Betrag'!", vbCritical: Exit Sub
'Prüfung ob diese Rechnung schon gedruckt wurde? If Sheets("Daten").Range("Tabelle2[[Print]]").Cells(rfind.Row - 1, 1) = "gedruckt" Then MsgBox "Diese Rechnung wurde bereits gedruckt!", vbInformation: Exit Sub End If
'** Range auf Spalte F erweitern?? Range("A1:F47").PrintOut Copies:=1
'Druckvermerk in Daten notieren Set rfind = Sheets("Daten").Range("Tabelle2[[RNr.]]").Find(what:=ReNr) Sheets("Daten").Range("Tabelle2[[Print]]").Cells(rfind.Row - 1, 1) = "gedruckt"
'Druckvermerk in Betrag notieren Set rfind = Sheets("Betrag").Range("Tabelle1[[RNr.]]").Find(what:=ReNr) Sheets("Betrag").Range("Tabelle1[[Print]]").Cells(rfind.Row - 1, 1) = "gedruckt" End Sub
Nachtrag habe den Code geändert, -ohne- mir die Beispieldatei anzusehen. Ich hoffe es klappt.
(05.02.2025, 19:25)Ubi5 schrieb: Fehler beim Kompilieren Mehrdeutiger Name: DruckeBereich
dann suche in deinem Code projektweit diesen Namen und identifiziere wo du die Sub ein zweites Mal definierst. Eine davon auskommentieren und das wars. Warum auskommentieren und nicht löschen? Weil man nie weis ob das was man löscht auch wirklich weg kann.
ich habe mir deine 2. Beispieldatei angesehen, da sehe ich aber keine erkennbare Fehlerquelle. Höfliche Frage, hast du den zweiten Code in ein neues Modul geladen, oder den 1.Code überschrieben?? Wenn der neue Code im Modul3 steht gibt es einen Namenskonflikt. Zwei Makros mit gleichem Namen!
Bei Konflikten mit Namensgleichheit setze ich hinter dem alten Code ein "_old()", z.B. "Sub DruckeBereich_old" Dann stört es Excel nicht mehr, und wenn es nicht klappt kann man den alten Code weiter benutzen.
Ich möchte bitte nicht lästig sein, mir ist aber aufgefallen, das im Register "Betrag" zwei Einträge mit der RNr. 1/2025 vermerkt sind, aber nur ein Datensatz mit gedruckt vermerkt wurde.
Ist eine Berichtigung überhaupt möglich - ansonsten belassen wir es so.
da kommt das Makro an seine technische Grenzen, weil normalerweise jede Rechnungs Nr. nur einmal vorkommt! Da muss ich darum bitten das von Hand zu korrigieren.
Mir ist beim testen aber noch ein Fehler aufgefallen, denn wir unbedingt berichtigen müssen! Der Suchlauf war nicht auf xlWhole eingestellt, weshalb die Find Suche falsche Ergebnisse bringen kann! Das habe ich noch korrigiert. Unten ist der geänderte Code. (siehe LookAt:=xlWhole )
mfg Gast 123
Code:
Sub DruckeBereich() Dim ReNr As Variant, rFind As Range ReNr = Sheets("Vorlage").Range("A10")
'Prüfung ob diese Rechnung existiert? Set rFind = Sheets("Daten").Range("Tabelle2[[RNr.]]").Find(what:=ReNr, LookAt:=xlWhole) If rFind Is Nothing Then MsgBox "Diese Rechnung fehlt in 'Daten'!", vbCritical: Exit Sub
'Prüfung ob diese Rechnung schon gedruckt wurde? If Sheets("Daten").Range("Tabelle2[[Print]]").Cells(rFind.Row - 1, 1) = "gedruckt" Then MsgBox "Diese Rechnung wurde bereits gedruckt!", vbInformation: Exit Sub End If
'Prüfung ob diese Rechnung in Betrag existiert? Set rFind = Sheets("Betrag").Range("Tabelle1[[RNr.]]").Find(what:=ReNr, LookAt:=xlWhole) If rFind Is Nothing Then MsgBox "Diese Rechnung fehlt in 'Betrag'!", vbCritical: Exit Sub
'** Range auf Spalte F erweitern?? 'Range("A1:F47").PrintOut Copies:=1
'Druckvermerk in Daten notieren Set rFind = Sheets("Daten").Range("Tabelle2[[RNr.]]").Find(what:=ReNr, LookAt:=xlWhole) Sheets("Daten").Range("Tabelle2[[Print]]").Cells(rFind.Row - 1, 1) = "gedruckt"
'Druckvermerk in Betrag notieren Set rFind = Sheets("Betrag").Range("Tabelle1[[RNr.]]").Find(what:=ReNr, LookAt:=xlWhole) Sheets("Betrag").Range("Tabelle1[[Print]]").Cells(rFind.Row - 1, 1) = "gedruckt" End Sub