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

Rahmen rechts wenn Bedingung erfüllt

Forumthread: Rahmen rechts wenn Bedingung erfüllt

Rahmen rechts wenn Bedingung erfüllt
04.02.2019 21:51:57
Otmar
Guten Abend liebe Excelfreunde,
vielleicht hat jemand Zeit und Lust, mir bei der Lösung zu folgendem Problem zu helfen. Die Lösung sollte als VBA-Variante und nicht als bedingte Formatierung entstehen.
Nehmen wir - auf das Wesentliche reduziert vereinfacht - an, in den Zellen B3 bis H3 stehen nebeneinander Datumsangaben, die via Formatierung als "Mo", "Di", "Mi", "Do", "Fr", "Sa", "So" angezeigt werden.
(Hinweis: Je nach gewähltem Monat tauchen die Wochentage an unterschiedlichen Stellen in der Zeile 3 auf.)
Darunter wird nun der Bereich B7 bis H10 angesprochen, z.B. über eine For each - Schleife.
Ziel ist es, in F7, F8, F9 und F10 jeweils rechts in den Zellen eine dünne Rahmenlinie zu machen, weil in F3 der Freitag steht.
Ebenso soll in H7, H8, H9 und H10 jeweils rechts eine dünne Rahmenline gemacht werden, weil in H3 der Sonntag steht.
(Hinweis: Es sind nicht immer nur 4 Zeilen im unteren Bereich; das kann variieren.)
Allgemein formuliert: Mache im Bereich unten jeweils rechts am Zellenrand eine dünne Rahmenlinie, wenn im Bereich obendrüber in derselben Spalte "Fr" oder "So" steht, damit die Wochenendtage von den Arbeitstagen optisch abgegrenzt werden.
Vorab schon einmal vielen Dank für Eure Ideen und Unterstützungen.
Otmar
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
warum denn keine bedingte Formatierung ?
04.02.2019 22:05:29
Matthias
Hallo
bedingte Formatierung wäre ziemlich einfach ...
Gruß Matthias
AW: warum denn keine bedingte Formatierung ?
04.02.2019 22:12:41
Otmar
Hallo Matthias,
Du hast natürlich vollkommen recht. Mit bedingter Formatierung geht das. Es geht auch mit VBA. Aber irgendwie war heute nach stundenlangem Rumtüfteln immer noch der Wurm drin. In der ersten Zeile im unteren Bereich hat VBA noch das gemacht, was ich wollte, in den nächsten Zeilen leider nicht mehr.
Bin einfach nicht auf die Lösung gekommen und dachte, dass hier vielleicht jemand helfen könnte.
Viele Grüße
Otmar
Anzeige
AW: ok hier mal (m)eine Datei
04.02.2019 22:26:46
Otmar
Hallo Matthias,
so soll's werden. Nur bitte mittels VBA :-)
Trotzdem vielen Dank an dich.
Otmar
Anzeige
Korrektur ...
04.02.2019 23:01:20
Matthias
For Each bitte damit ersetzen ...
    For Each RnG In Range("B3:H3")
If Weekday(RnG, vbMonday) = 5 Then
RnG.Borders(xlEdgeRight).LineStyle = xlDash
RnG.Offset(RnG.Row + 1, 0).Borders(xlEdgeRight).LineStyle = xlDash
RnG.Offset(RnG.Row + 2, 0).Borders(xlEdgeRight).LineStyle = xlDash
RnG.Offset(RnG.Row + 3, 0).Borders(xlEdgeRight).LineStyle = xlDash
RnG.Offset(RnG.Row + 4, 0).Borders(xlEdgeRight).LineStyle = xlDash
End If
Next
Gruß Matthias
Anzeige
AW: und hier nochmal anders ...
05.02.2019 08:34:38
Otmar
Hallo Matthias,
vielen Dank für deine hilfsbereite Unterstützung.
So komme ich zurecht.
Mit freundlichen Grüßen
Otmar
AW: Rahmen rechts wenn Bedingung erfüllt
04.02.2019 22:18:58
Otmar
Sorry, hatte vergessen, das Thema als noch offen zu markieren.
Otmar
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Rahmen rechts bei erfüllter Bedingung in Excel mit VBA


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und lade die Datei, in der du die Rahmenlinien anwenden möchtest.
  2. Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications-Editor zu öffnen.
  3. Füge ein neues Modul hinzu:
    • Klicke mit der rechten Maustaste auf „VBAProject (deineDatei.xlsx)“.
    • Wähle „Einfügen“ und dann „Modul“.
  4. Kopiere den folgenden VBA-Code in das neue Modul:
Sub RahmenRechtsBeiBedingung()
    Dim RnG As Range

    For Each RnG In Range("B3:H3")
        If Weekday(RnG, vbMonday) = 5 Then
            RnG.Borders(xlEdgeRight).LineStyle = xlDash
            RnG.Offset(1, 0).Borders(xlEdgeRight).LineStyle = xlDash
            RnG.Offset(2, 0).Borders(xlEdgeRight).LineStyle = xlDash
            RnG.Offset(3, 0).Borders(xlEdgeRight).LineStyle = xlDash
            RnG.Offset(4, 0).Borders(xlEdgeRight).LineStyle = xlDash
        End If
    Next
End Sub
  1. Schließe den VBA-Editor und gehe zurück zu Excel.
  2. Führe das Makro aus: Gehe zu Entwicklertools > Makros, wähle „RahmenRechtsBeiBedingung“ und klicke auf „Ausführen“.

Jetzt sollten in den Zellen F7, F8, F9 und F10 jeweils rechts eine dünne Rahmenlinie erscheinen, wenn in F3 der Freitag steht.


Häufige Fehler und Lösungen

  • Fehler: "Bedingte Formatierung wird nicht angewendet"

    • Lösung: Stelle sicher, dass der VBA-Code korrekt eingegeben wurde und dass der Makroschutz in Excel deaktiviert ist.
  • Fehler: "Rahmenlinien erscheinen nicht"

    • Lösung: Überprüfe, ob die Zellen B3 bis H3 tatsächlich die Wochentage beinhalten und ob der Code an der richtigen Stelle ausgeführt wird.

Alternative Methoden

Eine Alternative zur Verwendung von VBA ist die Bedingte Formatierung. Hier kannst du die Rahmenlinien direkt über die Menüoptionen einstellen:

  1. Wähle den Bereich B7 bis H10 aus.
  2. Gehe zu Start > Bedingte Formatierung > Neue Regel.
  3. Wähle „Formel zur Ermittlung der zu formatierenden Zellen verwenden“.
  4. Gib die Formel ein: =Wochentag($B$3;2)=5
  5. Klicke auf „Formatieren“ und wähle die Rahmenlinie aus.

Diese Methode ist einfacher, aber weniger flexibel als die VBA-Lösung.


Praktische Beispiele

Angenommen, du hast folgende Daten in B3 bis H3:

B3 C3 D3 E3 F3 G3 H3
Mo Di Mi Do Fr Sa So

Wenn du das Makro ausführst, wird in den Zellen F7 bis F10 eine dünne Rahmenlinie angezeigt.


Tipps für Profis

  • Nutze doppelte Rahmenlinien für eine bessere visuelle Abgrenzung, indem du xlDouble anstelle von xlDash verwendest.
  • Teste das Makro in einer Kopie deiner Datei, um unerwünschte Änderungen zu vermeiden.
  • Du kannst das Makro so anpassen, dass es auch für andere Wochentage funktioniert, indem du die Bedingung im If-Statement änderst.

FAQ: Häufige Fragen

1. Wie kann ich den grünen Rahmen weg bekommen? Du kannst die Rahmenlinien in Excel anpassen, indem du die Formatierungen in der Zelle zurücksetzt.

2. Funktioniert das Makro in allen Excel-Versionen? Ja, das Makro funktioniert in den meisten modernen Excel-Versionen, die VBA unterstützen, wie Excel 2010 und später.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige