Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1096to1100
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

For Schleife Einträge doppelt

For Schleife Einträge doppelt
williams
Hallo!
Ich habe ein misteriöses Problem. Mein Code ist Folgender:
With Worksheets(SheetToPrint)
LastEntry = .HPageBreaks.Count
Dim aktuelleZeile As Long
For I = 1 To LastEntry
aktuelleZeile = .HPageBreaks(I).Location.Row - 1
.Rows(aktuelleZeile).Insert 'Shift:=xlDown
.Cells(aktuelleZeile, 1).Value = "Übertrag"
Next I
End With
Ich möchte in die Leere Zeile das Wort Übertrag schreiben. Funktioniert auch. Doch Übertrag wird zweimal eingefügt. Einmal in die leere Zeile und einmal um dem Index unter der leeren Zeile.
Ich weiß echt nicht weiter. Vielleicht kann mir jemand helfen?
Vielen Dank im Voraus
Tony
AW: For Schleife Einträge doppelt
26.08.2009 14:52:23
fcs
Hallo Tony,
arbeite in der For-Next-Schleife vom letzten zum 1. Seitenwechsel.
Durch das Einfügen von Zeilen kommt es möglicherweise zu Verschiebungen zwischen den zu Beginn der Makro-Ausführung gemerkten Seitenwechseln und der durch das Einfügen der Zeilen tatsächlichen Zeile des Seitenwechsels.
With Worksheets(SheetToPrint)
LastEntry = .HPageBreaks.Count
Dim aktuelleZeile As Long
For I = LastEntry To 1 Step -1
aktuelleZeile = .HPageBreaks(I).Location.Row - 1
.Rows(aktuelleZeile).Insert 'Shift:=xlDown
.Cells(aktuelleZeile, 1).Value = "Übertrag"
Next I
End With

Gruß
Franz
Anzeige
AW: For Schleife Einträge doppelt
26.08.2009 15:01:08
williams
Vielen Dank schon mal. Es werden allerdings immer noch zwei Einträge "Übertrag" angezegit. Dieses Mal direkt hintereinander
LG
Tony
AW: For Schleife Einträge doppelt
26.08.2009 15:05:07
williams
das Problem ist, ja dass schon zu früh der Übertrag da rein geschreieben wird und damit eine bestehende zeile überscrieben wird egal ob von vorne oder hinten die schleife durchlaufen wird.
Er scheint diesen Code folgendermaßen auszuführen:
Schleife:
Fügt text ein (überschreibt damit bestehenden content)
Schleife ist zu ende
Zeilen werden eingefügt
Text wird eingetragen in leere Zeile (so soll es ja sein)
Fragen
Wieso wird die Zeile nicht sofort eingefügt und wieso wird der Text einmal sofort und dann noch mal eingefügt...
Vielen Dank schon mal
LG
Tony
Anzeige
AW: For Schleife Einträge doppelt
26.08.2009 16:44:52
fcs
Hallo Tony,
entweder wird durch das Einfügen der Leerzeilen ein weiterer Seitenwechsel (Automatischer) erzeugt, was dann irgendwie die Zählung der Seitenwechsel durcheinander bringt oder in deiner Datei ist noch ein Worksheet_Change-Ereignismakro aktiv, das irgendwelche Aktionen ausführt.
Im letzteren Fall solltest du in der Prozedur zu Beginn ein
Application.DisableEvents =True
und
am Ende
Application.DisableEvents =False
einfügen.
Gruß
Franz
@fcs: Lapsus
26.08.2009 16:51:21
Rudi
Hallo Franz,
es muss
Application.EnableEvents =False
und
Application.EnableEvents =True
heißen.
Gruß
Rudi
Anzeige
AW: For Schleife Einträge doppelt
26.08.2009 16:47:57
Harry
Hi,
übrigens werden die Umbrüche nur sicher und korrekt in der Seitenumbruchvorschau
gezählt, also im Code umschalten und am Schluss wieder zurück.
mfg Harry
AW: For Schleife Einträge doppelt
26.08.2009 16:53:28
Rudi
Hallo,
du solltest mal die Datei zur Verfügung stellen.
Gruß
Rudi
AW: For Schleife Einträge doppelt
26.08.2009 17:54:05
williams
Hallo zusammen!
Vielen Dank schon einmal für Eure Hilfe. Hier ist mal mein File:
https://www.herber.de/bbs/user/64074.xls
Es ist immer noch so wie beschrieben :(
AW: For Schleife Einträge doppelt
26.08.2009 17:56:24
williams
mit diesem Code kann man das testen.
Sub Workbook_BeforePrint(Cancel As Boolean)
Dim LastEntry As Long, I As Long, Merker As Long
Dim SheetToPrint As String
SheetToPrint = "Berechnung Druckversion"
Worksheets("Tabelle1").Activate
Sheets("Tabelle1").Copy After:=Sheets("Tabelle1")
ActiveSheet.Name = SheetToPrint
Worksheets(SheetToPrint).Activate
Application.CutCopyMode = False
Worksheets(SheetToPrint).PrintOut
ActiveWindow.View = xlPageBreakPreview
With Worksheets(SheetToPrint)
LastEntry = .HPageBreaks.Count
Dim aktuelleZeile As Long
For I = LastEntry To 1 Step -1
aktuelleZeile = .HPageBreaks(I).Location.Row
.Rows(aktuelleZeile - I).Insert
.Cells(aktuelleZeile - I, 1).Value = "Übertrag"
Next I
End With
End Sub

Anzeige
AW: For Schleife Einträge doppelt
26.08.2009 19:29:32
fcs
Hallo Tony,
das Problem war im wesentlichen das nicht korrekte setzen von EnableEvents und die Tatsache, dass in der Routine die Druckanweisung erneut ausgeführt wird. Dadurch kommt es in der Summe zu 2 Zeilen mit Eintrag Übertrag.
Außerdem muss der Parameter Cancel auf True gesetzt werden, damit nicht 2 mal gedruckt wird.
Gruß
Franz
Sub Workbook_BeforePrint(Cancel As Boolean)
Dim LastEntry As Long, I As Long, Merker As Long
Dim SheetToPrint As String
Dim aktuelleZeile As Long
If ActiveSheet.Name = "Tabelle1" Then
'Druckversion erzeugen und drucken
Application.EnableEvents = False
SheetToPrint = "Berechnung Druckversion"
Worksheets("Tabelle1").Copy After:=Sheets("Tabelle1")
ActiveSheet.Name = SheetToPrint
Application.CutCopyMode = False
'Worksheets(SheetToPrint).PrintOut   'wozu diese Zeile hier?
'Merker = ActiveWindow.View
ActiveWindow.View = xlPageBreakPreview 'nicht unbedingt erforderlich
With Worksheets(SheetToPrint)
LastEntry = .HPageBreaks.Count
Application.ScreenUpdating = False
For I = LastEntry To 1 Step -1
aktuelleZeile = .HPageBreaks(I).Location.Row
.Rows(aktuelleZeile - I).Insert
.Cells(aktuelleZeile - I, 1).Value = "Übertrag"
Next I
Application.ScreenUpdating = True
'      .PrintPreview 'Druckversion drucken mit Vorschau  'Testzeile
.PrintOut 'Druckversion drucken
End With
'ActiveWindow.View = Merker
Application.EnableEvents = True
Cancel = True 'Aktive Tabelle nicht drucken
End If
End Sub

Anzeige
AW: For Schleife Einträge doppelt
26.08.2009 21:29:39
williams
Hallo Franz!
Vielen Dank für Deine Mühe! Das hat mir sehr viel weitergeholfen. War schon etwas weitergekommen, aber Deine Version hat es noch mal wesentlich verbessert. Vielen Dank noch mal und einen schönen Abend noch!
Tony

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige