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

[VBA] Seiteneinrichtung mehrerer Blätter

[VBA] Seiteneinrichtung mehrerer Blätter
06.06.2019 12:51:41
Ralph
Hallo,
ich habe hier eine Seiteneinrichtung für ein Blatt (Header+Footer mit Text und Logo).
Die Eingaben für einige Werte erfolgen per Userform, inkl. der Höhe der Logos.
Klappt soweit alles prima.
Nun würde ich das Ganze gern auf alle "markierten" Blätter (ActiveWindow.SelectedSheets) anwenden.
Das klappt soweit auch aber:
Werden zwei Blätter und mehr markiert werden im ersten Blatt die Logos in 100% dargestellt. Erst ab dem zweiten markierten Blatt werden dann wieder die Einstellungen "durchgereicht".
Kennt jmd das Problem? Muss ich etwas initialisieren und dann wieder freigeben?
Grüße Ralph

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Was ist deine Erwartungshaltung ?
06.06.2019 15:00:47
EtoPHG
Ralph,
Bei deiner Level-Angabe müsste das doch keine unlösbares Problem sein, oder doch?
Was sollen die Helfer in diesem Forum mit deiner Problembeschreibung anfangen, bzw. was erwartest du als Antwort?
Gruess Hansueli
AW: Was ist deine Erwartungshaltung ?
06.06.2019 15:17:56
Ralph
Hallo,
ich dachte eigentlich, dass die Frage deutlich formuliert ist?! :-)
Wenn nicht, dann hier nochmal ein Versuch:
Habe ich in meiner Überlegung bzw. Sub -Struktur einen Fehler oder ist das ein (bekannter?) Excelbug?
Grüße
Ralph
AW: Was ist deine Erwartungshaltung ?
06.06.2019 16:05:30
EtoPHG
Hallo Ralph,
Nochmals,
Was ist eine Sub-Struktur?
Was ist ein Fehler? Was heisst durchreichen?
Was ist ein Excelbug? Wo findet man (bekannte) Excelbugs?
Wir sehen nur Wort. Keinen Code, keine Beispielmappe kein gar nix.
Ist das vielleicht deutlich formuliert?
Gruess Hansueli
Anzeige
AW: Was ist deine Erwartungshaltung ?
07.06.2019 09:23:57
Ralph
Hallo Hansueli,
danke für deine Antwort. Tut mir leid wenn ich mein Problem zu kurz beschrieben habe.
- Aufruf einer Userform für einige Einstellungen (Papierformat, -ausrichtung und Text)
- Diese Userform ruft dann eine Sub auf die das Pagesetup durchführt
Ist nur ein Blatt ausgewählt klappt das wunderbar, sind mehrere Blätter ausgewählt wird im ersten Blatt das Logo nicht skaliert (100%) und erst ab dem zweiten Blatt wird die Höhenvorgabe ausgeführt.
Hier die gekürzte Sub. Ich hoffe nun wird es etwas klarer.
Grüße Ralph
Sub Layout()
Dim ...
If UserForm2.ToggleButton2.Caption ..
If UserForm2.ToggleButton3.Caption ..
Dim objSheet As Worksheet
For Each objSheet In ActiveWindow.SelectedSheets
With objSheet
.Activate
With .PageSetup.RightHeaderPicture
' Logo 1
If UserForm2.ToggleButton1.Caption ..
.Filename =
.Height = Application.CentimetersToPoints(UserForm2.TextBox2.Text)
End If
' Logo 2
If UserForm2.ToggleButton1.Caption ..
.Filename =
End If
.Height = Application.CentimetersToPoints(UserForm2.TextBox2.Text)
End If
End With
With .PageSetup.LeftFooterPicture
.Filename =
.Height = Application.CentimetersToPoints(UserForm2.TextBox2.Text)
End With
' Seiteneinrichtung
With .PageSetup
.LeftHeader = ....
.CenterHeader =
.RightHeader = "&G"
.LeftFooter = "&G"
.CenterFooter = ..
.RightFooter = ..
End With
End With
Next
End Sub

Anzeige
Die Kürzungen sind zu radikal, um eine
07.06.2019 09:33:19
EtoPHG
detaillierte Analyse zu erstellen, Ralph
Besser wäre es eine gekürzte Beispielmappe in welcher der Fehler reproduzierbar ist hochzuladen.
(Am besten XLSM und Logo-Beispielgrafiken in einer Zip-Datei).
Gruess Hansueli
AW: Die Kürzungen sind zu radikal, um eine
07.06.2019 11:23:10
Ralph
hier die Testdatei (https://www.herber.de/bbs/user/130277.zip).
Den Code mußte ich etwas umbauen, da ich die Userform über das Ribbon aufrufe und dort die ID übergebe zur Auswahl des Logos.
Beim Testen habe ich folgendes Verhalten festgestellt:
- Wähle ich EIN Blatt aus, klappt die Einrichtung
- Wähle ich ALLE Blätter aus, klappt die Einrichtung und am Ende ist nur das letzte Blatt ausgewählt
- Wähle ich nur einen Teil der Blätter aus, geht die Einrichtung beim ersten Blatt beim Logo schief (beim Rest klappt es) und am Ende sind alle vorher ausgewählten Blätter noch ausgewählt
Grüße Ralph
Anzeige
Jetzt kann ich den Fehler reproduzieren, aber
07.06.2019 15:39:37
EtoPHG
habe leider weder Ursache gefunden, noch kann ich eine Lösung anbieten. Ralph
Ich werde mich noch ein bisschen mit dem Problem beschäftigen und melde mich ggf. nach dem Wochenende nochmals.
Gruess Hansueli
AW: Jetzt kann ich den Fehler reproduzieren, aber
11.06.2019 07:32:04
Ralph
Hallo,
"habe leider weder Ursache gefunden, noch kann ich eine Lösung anbieten"
Bei deiner Level-Angabe müsste das doch keine unlösbares Problem sein, oder doch?
Sorry, nichts für ungut... Manchmal sollte man keine Vorurteile Anderen gegenüber hegen ;-)
Danke erstmal für Deine Mühe und Dein Interesse.
Grüße
Ralph
Workaround/Lösung
11.06.2019 16:30:03
EtoPHG
Hallo Ralph,
Ich habe meinen Level nie angegeben und als Excel-Profi würde ich mich schon gar nicht bezeichnen.
Diesen Codeersatz für deine Sub habe ich auf XL365 2016 getestet und er funktioniert für alle deine erwähnten Fälle (Einzelnes Sheet, mehrere aber nicht alle und alle Sheets):
' ********************************************
' * Seiteneinrichtung (Aufruf über UserForm2)*
Sub Layouteinrichtung()
Dim Ausrichtung_txt As String, Papier_txt As String
Dim Zugriff_id As Integer
Dim LogoFusszeile As Double
Dim LogoHeight As Double
Dim DateiExistiert As Boolean
Dim nStep As String
Dim objSheet As Object
On Error GoTo Error_Handler
' Faktor für die Anpassung Fußzeilenlogo
LogoFusszeile = 0.5
LogoHeight = CDbl(Replace(UserForm2.TextBox2.Text, ",", "."))
If UserForm2.ToggleButton2.Caption = "Querformat" Then Ausrichtung_txt = xlLandscape
If UserForm2.ToggleButton2.Caption = "Hochformat" Then Ausrichtung_txt = xlPortrait
If UserForm2.ToggleButton3.Caption = "A4" Then Papier_txt = xlPaperA4
If UserForm2.ToggleButton3.Caption = "A3" Then Papier_txt = xlPaperA3
For Each objSheet In ThisWorkbook.Windows(1).SelectedSheets
With objSheet
nStep = "Select " & objSheet.Name
.Select
.PageSetup.RightHeader = "&G"
.PageSetup.LeftFooter = "&G"
With .PageSetup.RightHeaderPicture
' Logo NBT2
nStep = "Logo NBT2"
If UserForm2.ToggleButton1.Caption = "NBT2" Then
DateiExistiert = Not (GetAttr(ThisWorkbook.Path & "\" & "Logo1.jpg") _
And vbDirectory) = vbDirectory
If DateiExistiert Then
.Filename = ThisWorkbook.Path & "\" & "LOGO1.jpg"
Else
Zugriff_id = MsgBox("Kein Zugriff auf die Logo-Datei!", _
vbCritical + vbOKCancel + vbDefaultButton1)
If Zugriff_id = 2 Then Exit Sub
End If
.Height = Application.CentimetersToPoints(LogoHeight)
'                    Debug.Print objSheet.Name & "=" & .Height & " " & nStep
End If
' Logo NBT3
nStep = "Logog NBT3"
If UserForm2.ToggleButton1.Caption = "NBT3" Then
DateiExistiert = Not (GetAttr(ThisWorkbook.Path & "\" & "Logo2.jpg") _
And vbDirectory) = vbDirectory
If DateiExistiert Then
.Filename = ThisWorkbook.Path & "\" & "LOGO2.jpg"
Else
Zugriff_id = MsgBox("Kein Zugriff auf die Logo-Datei!", _
vbCritical + vbOKCancel + vbDefaultButton1)
If Zugriff_id = 2 Then Exit Sub
End If
.Height = Application.CentimetersToPoints(LogoHeight)
'                    Debug.Print objSheet.Name & "=" & .Height & " " & nStep
End If
End With
nStep = "Logo Fußzeile"
' Logo
With .PageSetup.LeftFooterPicture
DateiExistiert = Not (GetAttr(ThisWorkbook.Path & "\" & "Logo3.jpg") _
And vbDirectory) = vbDirectory
If DateiExistiert Then
.Filename = ThisWorkbook.Path & "\" & "LOGO3.jpg"
Else
Zugriff_id = MsgBox("Kein Zugriff auf die Logo-Datei!", _
vbCritical + vbOKCancel + vbDefaultButton1)
If Zugriff_id = 2 Then Exit Sub
End If
.Height = Application.CentimetersToPoints(LogoHeight) _
- Application.CentimetersToPoints(LogoFusszeile)
'                Debug.Print objSheet.Name & "=" & .Height & " " & nStep
End With
' Seiteneinrichtung
nStep = "PageSetup"
With .PageSetup
.LeftHeader = UserForm2.TextBox1.Text & Chr(10) & _
UserForm2.ComboBox1.Text & Chr(10) & _
"Datum" & vbTab & ": " & "&D"
.CenterHeader = "&""Arial,Bold""" & "&A"
.CenterFooter = "&""Arial,Standard""&F"
.RightFooter = "&""Arial,Standard""Seite &P von &N"
.LeftMargin = Application.CentimetersToPoints(1.5)
.RightMargin = Application.CentimetersToPoints(1.5)
.TopMargin = Application.CentimetersToPoints(2.2)
.BottomMargin = Application.CentimetersToPoints(1.8)
.HeaderMargin = Application.CentimetersToPoints(0.7)
.FooterMargin = Application.CentimetersToPoints(0.7)
'                .PrintQuality = 600
.Orientation = Ausrichtung_txt
.PaperSize = Papier_txt
.FirstPageNumber = xlAutomatic
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = False
.DifferentFirstPageHeaderFooter = False
.ScaleWithDocHeaderFooter = True
.AlignMarginsHeaderFooter = True
'                Debug.Print objSheet.Name & "/Pagesetup/" & nStep
End With
End With
Next
Error_Handler:
If Err.Number  0 Then
MsgBox "Error at " & nStep & "!" & vbCrLf & _
Err.Description, _
vbCritical, "ErrNum:" & Err.Number
Err.Clear
End If
End Sub
Gruess Hansueli
Anzeige
AW: Workaround/Lösung
12.06.2019 10:43:06
Ralph
Hallo Hansueli,
Dein "Level" steht wie bei jedem in der Kopfzeile wenn du etwas postest...
Danke Dir für die Änderungen. Werde ich mal checken.
Grüße
Ralph
Dein Level / Nicht mein Level
12.06.2019 11:52:33
EtoPHG
Hallo Ralph,
Da irrst Du Dich gewaltig.
Es ist immer das Level des Anfragenden, nie des Antworters!
Gruess Hansueli
AW: Workaround/Lösung
12.06.2019 10:54:40
Ralph
Hallo Hansueli,
kurzer Test deiner Änderungen hat bereits bei der Änderung von Activate auf Select und des Vorziehens der Vereinbarung der Logos (.PageSetup.RightHeader = "&G"; .PageSetup.LeftFooter = "&G") den Erfolg gebracht.
DANKE nochmal für Deine Unterstützung
Grüße
Ralph
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige