Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1824to1828
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
Inhaltsverzeichnis

leere Seite in VBA finden

leere Seite in VBA finden
12.04.2021 13:05:53
Mario
Hallo zusammen,
ich hab ein Problem.
Muss in der Firma ein Formular erstellen welches sich auf Basis diverser Exports aufbaut.
Da ich nicht weiß wieviele Daten in den Exports stehen. Lass ich das ganze via Schlagwörter von VBA in Excel aufbereiten/Formatieren.
Jetzt zu meinem Problem.
Als letzte Seite in meinem Formular sollte dann eine Seite für Änderungen hinzugefügt werden.
Hierfür möchte ich gerne eine vollständige A4 Seite verwenden welche nur Überschriften enthält.
Überschriften:
Nr. Änderungsgrund alter Wert neuer Wert Unterschrift
Wie finde ich heraus welche Zelle die erste Zelle im Neuen Druckbereich ist.

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

Betreff
Datum
Anwender
Anzeige
AW: leere Seite in VBA finden
12.04.2021 15:38:56
Rudi
Hallo,
ist ziemlich tricky.
Teste mal:
Sub aaa()
Dim r1 As Range, r2 As Range, i As Integer, h As Integer, sAddr
Application.ScreenUpdating = False
ActiveWindow.View = xlPageBreakPreview
h = ActiveSheet.HPageBreaks.Count
Set r1 = Cells(Rows.Count, 1).End(xlUp)
On Error Resume Next
sAddr = ActiveSheet.HPageBreaks(h).Location.Address
On Error GoTo 0
If sAddr = "" Then
Set r2 = r1.Offset(1)
Else
Do While ActiveSheet.HPageBreaks.Count = h
i = i + 1
r1.Offset(i) = "#"
Loop
Set r2 = r1.Offset(i + 1)
Range(r1.Offset(1), r2).Clear
End If
r2.Resize(, 5) = _
Array("Nr.", "Änderungsgrund", "alter Wert", "neuer Wert", "Unterschrift")
ActiveWindow.View = xlNormalView
End Sub

Gruß
Rudi
Anzeige
AW: leere Seite in VBA finden
12.04.2021 17:31:22
Mario
Danke Rudi für deinen Code! Der ist ja mal mega genial und mega komplex!!!!
Das Problem von 4x hat er 2x gemacht was er sollte und 2x einfach die Überschriften eine Zeile darunter eingefügt....
Da Wissen macht ist, würde ich gerne verstehen was der Code macht.
Kannst du mir bitte folgendes erklären?
On Error Resume Next
sAddr = ActiveSheet.HPageBreaks(h).Location.Address
Was machst du hier? Warum brauch ich das? Muss zugeben ich programmiere zwar viel hab aber noch nie mit On Error gearbeitet...
Leider fange ich nichts mit der Bezeichnung Offset nichts an und auch leider nicht mit der relativen adressierung
Auch verstehe ich nicht warum die ganzen "#" gelöscht werden da deine Range im Überwachungsfenster [r1.offset(1)="#"] und r2 leer ist.
und auch r2.resize kenne ich nicht.
Würde aber gerne deinen Code verwenden.
LG
Anzeige
AW: leere Seite in VBA finden
12.04.2021 20:31:07
Piet
Hallo mario
On Error gehört eigentlich zum VBA Standard Wissen, also - kuze VBA Praxis:
On Error GoTo 0 löscht alle Fehler Nummern, On Error GoTo xxxName heisst, im Fehlerfall springt das Makro zu diesem Namen (Label) der als Sprungmarke einen ":" Doppelpunkt haben muss! On Error Resume Next heisst - ignoriere evtl. Fehler und führe den naechsten Befehl aus! Wir verwenden es im Makro um evtl. Laufzeitfehler abzufangen.
Offset heisst, das eine verschobene Zelle gemeint ist! Angegeben wird Offset(z=Zeile, s=Spalte). Range("A1") .Offset(0, 1) entspricht "B1" Range("A1") .Offset(1, 0) entspricht "A2". Mit -Minus geht es auch rückwaerts, aber NIE über das Blattende hinaus!! Der Vorteil von Offset ist, das man von einer gemeinsamen Basisadresse die benachbarten Zellen erreichen kann! So braucht man nicht jede Adresse einzeln zu programmieren.
Resize(z, s) vergrössert einen vorhanden Bereich um die angegebene Z/S Zahl Wird gerne zum Kopieren benutzt.
mfg Piet
Anzeige
AW: leere Seite in VBA finden
12.04.2021 23:14:55
Yal
Hallo Mario,
Ergänzung zu Piets Erklärung (probieren statt studieren):
Public Sub Makro1()
Debug.Print "Einstieg"
Test1
Test2
Test3
Debug.Print "Austieg"
End Sub
Private Sub Test1()
On Error Resume Next
Debug.Print 1 / 0
Debug.Print "Test 1, Anweisung 2"
End Sub
Private Sub Test2()
On Error GoTo Catch
Try:
Debug.Print 1 / 0
Debug.Print "Test 2, Anweisung 2"
GoTo Finally
Catch:
Debug.Print "Test 2, Fehlerbehandlung"
Finally:
Debug.Print "Test 2, was auf alle Fälle am Ende gemacht werden sollte"
End Sub
Private Sub Test3()
On Error Resume Next
Debug.Print 1 / 0
Debug.Print "Test 3, Anweisung 2"
On Error GoTo 0 'Debug-Modus: man will den Fehler sehen können
Debug.Print 1 / 0
Debug.Print "Test 3, Anweisung 4"
End Sub

VG
Yal
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige