Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Seitenumbruch nach Spalte A verhindern
#11
Hi Mauritius,

(17.02.2023, 09: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