Seitenumbruch nach Spalte A verhindern
#11
Hi Mauritius,

(17.02.2023, 10:30)HKindler schrieb: Erlaube mir bitte noch ein wenig Kritik an deiner Datei.

außerdem:

Du hast in Modul 5 Subs definiert mit Hintergrund-Farben.
In Modul 1 schreibst du den Makro-Code aus den Subs in Modul 5 in das PDF-Erstellen, anstatt da die Subs aus 5 einfach aufzurufen.
Genauso, wie Du die Makros auf Modul 4 nochmal in Modul 1 reinschreibst, statt sie einfach aufzurufen.

Du kannst das Makro in Modul 5 stark kürzen, glaube ich:
Code:
Sub Hintergrundfarbe_löschen()
'
' Hintergrundfarbe_löschen Makro
'

'
    Cells.Select
    With Selection.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
End Sub

Sub FarbeEins()
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent1
        .TintAndShade = 0.399975585192419
        .PatternTintAndShade = 0
    End With
End Sub

Sub FarbeZwei()
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent1
        .TintAndShade = 0.799981688894314
        .PatternTintAndShade = 0
    End With
End Sub

Sub Hintergrundfarbe_hinzufügen()
'
' Hintergrundfarbe_hinzufügen Makro
'

'
    Range("A11:B11").Select
    Call FarbeEins
    Range("A23:B23").Select
    Call FarbeZwei
    Range("A32:B32").Select
    Call FarbeZwei
    Range("A41:B41").Select
    Call FarbeZwei
    Range("A49:B49").Select
    Call FarbeZwei
    Range("A58:B58").Select
    Call FarbeEins
    Range("A59:B59").Select
    Call FarbeZwei
    Range("A68:B68").Select
    Call FarbeEins
    Range("A69:B69").Select
    Call FarbeZwei
    Range("A77:B77").Select
    Call FarbeZwei
    Range("A84:B84").Select
    Call FarbeZwei
    Range("A94:B94").Select
    Call FarbeEins
    Range("A95:B95").Select
    Call FarbeZwei
End Sub

Das geht sicher noch kürzer, wenn man die selektierten Bereich zusammenfasst, aber da habe ich jetzt keine Zeit für, jetzt ist gleich Mittagspause.

Gruß Ralf
Antworten Top
#12
Ich wusste nicht, dass ich auf die einzelnen Module zugreifen kann. Mittels "Call" wie ich bei dir lesen kann, ist dies korrekt?

Ich zeichne gewisse Befehle mittels Recorder auf und da gibt es mir dann das Modul. Den Code habe ich bis anhin dann immer aus dem Modul rauskopiert.

Und natürlich geht der Code noch kürzer. Wie gerne hätte ich diesen auch handlicher gestaltet. Wie geschrieben, fehlt mir hierzu allerdings das Wissen.
Antworten Top
#13
Hi,

also wenn schon kürzen, dann eliminieren wir doch bitte auch gleich ".Select" und "Selection." und fassen noch weiter zusammen:

Code:
Sub Hintergrundfarbe_löschen()
'
' Hintergrundfarbe_löschen Makro
'

'
    With Cells.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
End Sub

Sub Farbe(Zellen As Range, Helligkeit As Double)
    With Zellen.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent1
        .TintAndShade = Helligkeit
        .PatternTintAndShade = 0
    End With
End Sub

Sub Hintergrundfarbe_hinzufügen()
'
' Hintergrundfarbe_hinzufügen Makro
'

'
    Farbe Range("A11:B11,A58:B58,A68:B68,A94:B94"), 0.399975585192419
    Farbe Range("A23:B23,A32:B32,A41:B41,A49:B49,A59:B59,A69:B69,A77:B77,A84:B84,A95:B95"), 0.799981688894314
End Sub
Wie du siehst, braucht man nicht mal Call, sondern schreibt einfach den Sub-Namen und dahinter die Argumente (falls es welche gibt). Wenn man Call und Argumente verwendet, dann müssen die Argumente in Klammern:
Code:
Call Farbe(Range("A11:B11,A58:B58,A68:B68,A94:B94"), 0.399975585192419)

Oder man verzichtet auf die Sub Farbe und schreibt es so:

Code:
Sub Hintergrundfarbe_hinzufügen()
    With Range("A11:B11,A58:B58,A68:B68,A94:B94").Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent1
        .TintAndShade = 0.399975585192419
        .PatternTintAndShade = 0
    End With
    With Range("A23:B23,A32:B32,A41:B41,A49:B49,A59:B59,A69:B69,A77:B77,A84:B84,A95:B95").Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent1
        .TintAndShade = 0.799981688894314
        .PatternTintAndShade = 0
    End With
End Sub
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
[-] Folgende(r) 1 Nutzer sagt Danke an HKindler für diesen Beitrag:
  • Rabe
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste