Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

MsgBox bei automatischen Seitenwechsel

Forumthread: MsgBox bei automatischen Seitenwechsel

MsgBox bei automatischen Seitenwechsel
19.03.2026 08:14:46
Moni1262
Hallo, ich habe eine Tabelle mit 10 Spalten wobei die Daten über eine Userform eingegeben werden. Jede Seite umfasst 20 Zeilen, danach erfolgt ein automatischer Seitenwechsel. Da in 5 Spalten die Parameter meist gleich bleiben, werden diese durch ein Wiederholungszeichen dargestellt. Am Beginn einer neuen Seite müssen diese aber wieder in Textform angegeben werden. Deshalb möchte ich nach jedem Seitenwechsel eine MsgBox mit dem Hinweis "Daten bitte wieder vollständig ausfüllen". Ein Ende der Liste ist nicht absehbar, da sie je nach Fall zwischen 20 und 1600 Zeilen haben kann. Für eine Hilfe wäre ich sehr dankbar
Anzeige

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: MsgBox bei automatischen Seitenwechsel
19.03.2026 12:34:15
Emkaes
Hallo,

aus deiner Beschreibung der Aufgabe schließe ich, dass du Excel wie einen LeitzOrdner mit vielen Din A4-Seiten behandelst.

Es ist, bei richtiger Verwendung, nicht notwendig, eine „Überschriftszeile“ zu verwenden. Dazu gibt es im Druckmenü eine Option, die auf jeder zu druckenden Seite die Überschriftszeile automatisch einfügt.

Grundsätzlich sollte man mit Excel wie folgt verfahren:
es gibt eine DATENtabelle, in der die Daten listenartig eingetragen werden. Diese Tabelle muss nicht „schön“ sein. Sie muss zweckmäßig sein. EIN Datensatz in EINER Zeile, jede Spalte der Zeile nur EINE Information!

Es gibt eine AUSWERTE-/BERICHTStabelle, die „hübsch“ formatiert werden kann. Die Tabelle holt sich die erforderlichen Daten per Formel oder VBA aus der DATENtabelle. Oder du benutzt dafür PQ (PowerQuery) bzw andere Auswertetools.

So, klugscheissermodus aus!

Wenn du deine bisherige Arbeitsweise nicht ändern möchtest, kannst du durch einfache Division/ Division mit Rest doch ermitteln, ob du dich in Zeile 1 der neuen Seite befindest.

Falls das dir noch nicht hilft, lade eine Beispieldatei mit gefakten Daten hoch

Emkaes
Anzeige
AW: MsgBox bei automatischen Seitenwechsel
19.03.2026 13:19:23
Moni1262
Hallo Emkaes, es geht dabei nicht um die Überschrift sondern um eine zu befüllende Zeile. Ich habe eine Beispiel hochgeladen , hoffe das funktioniert https://www.herber.de/bbs/user/180419.xlsx
AW: MsgBox bei automatischen Seitenwechsel
19.03.2026 14:04:28
daniel
Hi
ich würde das so machen:
1. befülle die Liste vollständig, auch mit sich wiederholenden Werten.
alles andere ist grober Unfung, denn nur mit vollständigen Werten kannst du auch sinnvoll mit der Liste arbeiten, dh filtern, sortieren, Auswertungen machen usw.

2. um für die Optik die Wiederholungszeichen einzusetzen, kannst du die bedingte Formatierung verwenden. Diese bringt dir das gewünschte Aussehen, lässt aber den Inhalt unverändert.
hier wäre also die Bedingte Formatierung für den Bereich, wenn der Wert gleich dem Wert in der Zelle drüber, dann zeige das Wiederholungzeichen "I" an.
die Regel wäre also: =B10=B9 und die Anzeige regelst du über das benutzerdefinierte Zahlenformat: I;I;I;I

3. da du auch bei einem Seitenwechsel die Werte und nicht die Wiedholungszeichen sehen willst, nimmst du noch die Spalte K hinzu, in welcher du die Zeilen, in welchen der Wert zusätzlich angezeigt werden soll, mit einem "x" kennzeichnest.
die Formel erweiterst du dann:
=Und(B10=B9;$K10="")

die x kannst du bei Bedarf von Hand setzen oder du verwendest ein Marko dafür:
Sub test()

Dim i As Long
ActiveSheet.Columns(11).ClearContents
For i = 1 To ActiveSheet.HPageBreaks.Count
Cells(ActiveSheet.HPageBreaks.Item(i).Location.Row, 11).Value = "x"
Next
End Sub


im Anhang das Beispiel, aber noch ohne Makro, dh du musst da die "x" noch von Hand einfügen.

https://www.herber.de/bbs/user/180420.xlsx

Gruß Daniel

Anzeige
AW: MsgBox bei automatischen Seitenwechsel
19.03.2026 14:38:33
Moni1262
Hallo Daniel, die Liste wird nicht gefiltert, sortiert und es wird auch keine Auswertung gemacht. Sie wird innerhalb mehrerer Tage oder Wochen erfasst und anschließend zur Kenntnis genommen. Eine Zeile mit x zu markieren und übertragen, funktioniert deshalb nicht da sich die Parameter der Säulennummer, der Länge und meist auch das Datum verändern. Die Meldung eines Seitenwechsel wäre deshalb sinnvoll, zumal die Eingabe über eine Userform passiert und nicht direkt in die Tabelle eingegeben wird. Die Wiederholungszeichen sind auch gewählt, damit die Liste bei Veränderungen übersichtlicher wird.
Anzeige
AW: MsgBox bei automatischen Seitenwechsel
19.03.2026 14:49:07
daniel
also nochmal
mit meiner Methode bekommst du die Wiederholungszeichen immer angezeigt, wenn sich der Wert ändert.
ist der Wert gleich, kommt das Wiederholungszeichen.
zusätzlich kannst du den Wert auch dann anzeigen lassen, wenn du ein "x" in die Spalte 11 einträgst, also überall dort, wo du es möchtest, beispielsweise nach einem Seitenwechsel.
das ist es doch , was du willst, oder habe ich dich falsch verstanden?
Anzeige
AW: MsgBox bei automatischen Seitenwechsel
19.03.2026 15:19:54
Moni1262
Wie gesagt, die Werte werden über die Userform ausgefüllt. Pro Spalte ist dafür eine Combobox mit den unterschiedlichen Werten und dem Wiederholungszeichen gefüllt . Die erste Zeile wird mit den Werten gefüllt, die zweite Zeile mit dem Wiederholungszeichen. Sofern sich in den kommenden Zeilen die Werte nicht verändern, gibt der Anwender immer nur die Säulennummer und die Länge ein und drückt Eingabe. Gibt es eine Änderung bei einer Säule nur in einer oder mehreren Spalten, wird dies über die Combobox eingegeben. Die Werte können sich über 60 oder mehr Zeilen nicht ändern, oder es können sich nach 50 Zeilen zwei Werte für 3 Zeilen verändern und dann wieder die alten Werte stehen. Die Tabelle wird aufgrund von Handzetteln jeden Tag befüllt und sollte daher sehr einfach und mit wenig Zeitaufwand für den Anwender sein.
Anzeige
AW: MsgBox bei automatischen Seitenwechsel
19.03.2026 15:27:38
daniel
ich bleibe dabei.
du solltest statt der Wiederholungszeichen die echten Werte in die Liste schreiben.
Für den Anwender bei der Eingabe sollte das keinen Unterschied machen.
die Wiederholungzeichen kommen dann über die bedingte Formatierung.
so kannst du das beliebig steuern, wo Wiederholungszeichen stehen und wo die Werte angezeigt werden, ohne dass nachträglich was eingetragen werden muss.
Anzeige
AW: MsgBox bei automatischen Seitenwechsel
19.03.2026 15:25:19
Moni1262
Ich kann auch damit leben nach Befüllung jeder 20. Zeile einen manuellen Seitenwechsel zu setzen und damit verbunden einen MsgBox auszugeben.
AW: MsgBox bei automatischen Seitenwechsel
19.03.2026 15:29:28
daniel
bleib doch einfach bei Papier und Bleistift, das ist noch einfacher.
AW: MsgBox bei automatischen Seitenwechsel
20.03.2026 14:23:36
emkaes
Hi,

hier einmal eine beispielhafte Möglichkeit des Aufrufes einer MsgBox.

Da du die Tabelle per Makro aus einer Userform befüllst, gehe ich davon aus, dass dir die Zeilennummer der zu befüllenden Zeile bekannt ist.
Gesetzt den Fall, deine Daten beginnen, wie in deiner Beispieldatei, in Zeile 10 hilft dir die Division mit Rest.

Die beiden u.a. Mskros demonstrieren dir die Funktionsweise. Die Berechnung mußt du dann in deinen UserformCode an der entsprechend3en Stelle einfügen. Statt der Variablen i mußt du dann vermutlich so etwas wie
lrow= worksheets(????).cells(rows.count,1).end(xlup).row +1
übergeben.

Sub msgbox_aufrufen()

msgbox ("Bitte Daten wegen Seitenwechsel vollständig eingeben!")
End Sub

Sub DatenEintragenAusUserform()
Dim i As Long
For i = 10 To 60
If (i - 10 ) Mod 20 = 0 Then
Call msgbox_aufrufen
msgbox " Neuer Datensatz in Zeile " & i
End If
Next
End Sub



emkaes
Anzeige
AW: MsgBox bei automatischen Seitenwechsel
20.03.2026 16:11:07
Moni1262
Ganz lieben Dank für deinen Beitrag. Um genau zu sein, der erste Eintrag ist, wie du richtig vermutet, in Zeile 10, die Seite endet in Zeile 29. Pro Seite gibt es immer 20 Zeilen. Die Tabelle kann 1500 Einträge lang werden.
AW: MsgBox bei automatischen Seitenwechsel
20.03.2026 16:33:27
daniel
naja, da kannst du ja 70x ne Messagebox bekommen.
willst du das wirklich?
ich bleibe dabei:
1. Liste vollständig und ohne Lücken befüllen
2. Seitenwechsel in einer Zusatzspalte kennzeichnen (von Hand)
3. Wiederholungszeichen per Bedingter Formatierung unter berücksichtigung eines Seitenwechsels anzeigen lassen
dann musst du nur noch die Seitenwechsel eintragen und keine Werte mehr manuell ergänzen (wobei ja immer auch Fehler passieren können)
das eintragen der Seitewechsel kann auch ein einfaches Makro übernehmen.
Anzeige
AW: MsgBox bei automatischen Seitenwechsel
20.03.2026 18:38:43
emkaes
Hi,

wenn du mein Makro nicht, wie beabsichtigt, zum laufen bringst, dann poste mal deinen Code der Userform, damit wir hier zum ende kommen und daniel auch zur ruhe kommt :-))

emkaes
AW: MsgBox bei automatischen Seitenwechsel
20.03.2026 18:50:23
Moni1262
Userform
Private Sub btnEingabe_Click()

Call Makro2
Call DatenEintragenAusUserform

'Tabellenzeie hinzufügen
With Tabelle1.ListObjects("tblDaten").ListRows.Add

'Tabellenzeile befüllen
'.Range(, 1).Value =
.Range(, 2).Value = cbDatum.Value
.Range(, 3).Value = txtNummer.Value
.Range(, 4).Value = txtLaenge.Value
.Range(, 5).Value = cbDM.Value
.Range(, 6).Value = cbOK.Value
.Range(, 7).Value = cbRamm.Value
.Range(, 8).Value = cbKopf.Value
.Range(, 9).Value = cbVerpress.Value
.Range(, 10).Value = cbAnmerkung.Value

End With


UfPersonal.txtNummer = ""
UfPersonal.txtLaenge = ""

UfPersonal.txtNummer.SetFocus
End Sub

Sub msgbox_aufrufen()
MsgBox ("Bitte Daten wegen Seitenwechsel vollständig eingeben!")
End Sub


Private Sub UserForm_Initialize()

'Combobox befüllen
cbDatum.List = Array("I")
cbDM.List = Array("Daten", "118 x 9,0", "118 x 10,6", "170 x 7,5", "170 x 9,0", "170 x 10,6", "I")
cbOK.List = Array("lt. Plan", "lt. AG", "Lt.AG / Plan", "ohne Höhe", "I")
cbRamm.List = Array("lt. Auftraggeber", "lt. Plan", "lt. Geologe", "lt. Statiker", "Aufsitzer", "_kn", "I")
cbKopf.List = Array("Platte + Dorn", "Platte + Zugeisen", "Platte + Gewinde", "Platte + Bewährung", "I")
cbVerpress.List = Array("ca. lt. / lfm.", "unverpresst", "I")


End Sub

Modul2
Sub Makro2()

Tabelle1.Range("D7").Formula = "=SUM(R10c4:R2000C4)"
End Sub

Modul1
Sub UfPersonalaufrufen()
UfPersonal.Show
End Sub

Sub UFAdresseaufrufen()
UfAdresse.Show
End Sub

Private Sub Worksheet_change(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet

If Target.Column = 1 And Target.Cells.Count = 1 Then
If Target.Value > "" Then
If ws.Cells(Target.Row, 1).Value = "" Then
If Target.Row > 1 Then
ws.Cells(Target.Row, 1).Value = wa.Cells(Target.Row - 1, 1).Value
Else
ws.Cells(Target.Row, 1).Value = 1
End If
End If
End If
End If

End Sub




Anzeige
AW: MsgBox bei automatischen Seitenwechsel
24.03.2026 00:43:32
emkaes
Hi Moni,

komme leider jetzt erst dazu, zu antworten.

Wenn ich deinen Code richtig verstanden habe, dann rufst du deine Userform auf und initialisierst Comboboxen mit Daten.
Anschließend werden für den neuen Datensatz die entsprechenden Werte ausgewählt und mit dem btnEingabe_Click an eine intelligente Tabelle angefügt.

Daher brauchst du bereits beim Aufruf der Userform_initialize() die Info, ob eine neue Seite "dran" ist.

Daher mußt du in der Userform_initialize berechnen, wie viele Datensätze bereits vorhanden sind.
In einer intelligenten Tabelle kannst du mit
tblDaten.databodyrange.rows.count

die Anzahl der Datensätze ermittel und mit Division mit Rest weisst du dann, ob für den nächsten Datensatz ein "normaler" oder ein Datensatz auf neuer Seite anliegt

Dazu reicht eine Ergänzung in der Userform_initialize

Private Sub UserForm_Initialize()


If Tabelle1.ListObjects("tblDaten").DataBodyRange.Rows.Count Mod 20 = 0 Then _
MsgBox ("Bitte Daten wegen Seitenwechsel vollständig eingeben!")

'Combobox befüllen
cbDatum.List = Array("I")
cbDM.List = Array("Daten", "118 x 9,0", "118 x 10,6", "170 x 7,5", "170 x 9,0", "170 x 10,6", "I")
cbOK.List = Array("lt. Plan", "lt. AG", "Lt.AG / Plan", "ohne Höhe", "I")
cbRamm.List = Array("lt. Auftraggeber", "lt. Plan", "lt. Geologe", "lt. Statiker", "Aufsitzer", "_kn", "I")
cbKopf.List = Array("Platte + Dorn", "Platte + Zugeisen", "Platte + Gewinde", "Platte + Bewährung", "I")
cbVerpress.List = Array("ca. lt. / lfm.", "unverpresst", "I")


End Sub


Die Codes, die ich dir oben gepostet hatte, dienten lediglich zur Veranschaulichung und zum Ausprobieren. Die kannst du löschen.

emkaes

Anzeige
AW: MsgBox bei automatischen Seitenwechsel
24.03.2026 12:36:06
Moni1262
Hallo Emkaes,

Hab den Code jetzt eingefügt

Private Sub UserForm_Initialize()
If Tabelle1.ListObjects("tblDaten").DataBodyRange.Rows.Count Mod 20 = 0 Then _
MsgBox ("Bitte Daten wegen Seitenwechsel vollständig eingeben!")

'Combobox befüllen
cbDatum.List = Array("I")
cbDM.List = Array("118x7,5", "118 x 9,0", "118 x 10,6", "170 x 7,5", "170 x 9,0", "170 x 10,6", "I")
etc.
End Sub

Das Programm läuft, aber es wird keine MsgBox angezeigt.

Lg Moni
Anzeige
AW: MsgBox bei automatischen Seitenwechsel
24.03.2026 12:47:04
Emkaes
Hi Moni,

Die Msgbox ploppt ja nur dann auf, wenn die Anzahl der vorhandenen Datensätze 19, 39, 59…. Ist und der nächste Datensatz somit auf eine „neue“ Seite geschrieben werden soll

emkaes
AW: MsgBox bei automatischen Seitenwechsel
24.03.2026 12:57:34
Moni1262
Die MsgBox poppt aber nicht auf, er wechselt die Seite ohne Meldung.
AW: MsgBox bei automatischen Seitenwechsel
24.03.2026 14:06:54
Moni1262
Hab jetzt noch etwas probiert. Ja, die MsgBox ploppt auf sofern die Userform nicht offen ist, d.h. wenn ich die 21. Zeile befüllen möchte und erst zu diesem Zeitpunkt die Userform aktiviere, dann kommt davor die Msg.Box. Ist die Userform allerdings geöffnet während ich ein Seitenumbruch erfolgt, gibt es keine Meldung..
Anzeige
AW: MsgBox bei automatischen Seitenwechsel
24.03.2026 14:44:10
Moni1262
So richtig eingefügt funktioniert es perfekt.

Private Sub btnEingabe_Click()

UfPersonal.txtNummer = ""
UfPersonal.txtLaenge = ""

If Tabelle1.ListObjects("tblDaten").DataBodyRange.Rows.Count Mod 20 = 0 Then _
MsgBox ("Bitte Daten wegen Seitenwechsel vollständig eingeben!")

UfPersonal.txtNummer.SetFocus

Recht, recht herzlichen Dank für Deine tolle Unterstützung. Hab noch ein Problem, werde aber dazu einen neuen Thread eröffnen, zumal ich mich für deine Hilfe nicht mit dem dafür vorgesehenen Button bedanken kann. Leider hatte ich mich anfangs bei Daniel bedankt, zumal ich keinen Sinn darin fand einen anderen umständlichen Lösungsweg zu folgen.


Anzeige
Anzeige
Anzeige