Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Diagonale Rahmenlinien mit Hilfe von VBA

Forumthread: Diagonale Rahmenlinien mit Hilfe von VBA

Diagonale Rahmenlinien mit Hilfe von VBA
22.12.2016 08:23:13
Michael

Ich versuche mal, mein Problem zu schildern ...
In manchen Zellen meiner Excel-Tabelle kann "ja" oder "nein" stehen. Nun hätte ich gerne, dass - wenn zB in der Zelle C6 das Wort "ja" steht - die Zelle A6 diagonale Rahmenlinien bekommt [allgemein und anders formuliert: Die Zelle soll diagonal gestrichen werden, wenn die Zeile in der selben Zeile, aber zwei Spalten weiter das Wort "ja" enthält.]. Über eine bedingte Formatierung ist dies nicht machbar ... aber über VBA sollte es klappen.
Derzeit bin ich so weit ... bei der 'Adressierung' habe ich allerdings grobe Schwierigkeiten.
Ich hoffe, dass nicht mehr allzuviel fehlt. Kann mir bitte jemand weiterhelfen?
Danke schon mal ...

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Offset(0, 2) = "ja" Then
With Target
With .Borders(xlDiagonalUp)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With .Borders(xlDiagonalDown)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
End With
Else
With Target
.Borders(xlDiagonalUp).LineStyle = xlNone
.Borders(xlDiagonalDown).LineStyle = xlNone
End With
End If
End Sub

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Diagonale Rahmenlinien mit Hilfe von VBA
22.12.2016 08:37:47
Hajo_Zi
ich vermute es soll bei der Eingabe von "ja"
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target = "ja" Then
With Target.Offset(0, 2)
With .Borders(xlDiagonalUp)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With .Borders(xlDiagonalDown)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
End With
Else
With Target.Offset(0, 2)
.Borders(xlDiagonalUp).LineStyle = xlNone
.Borders(xlDiagonalDown).LineStyle = xlNone
End With
End If
End Sub

Anzeige
AW: Diagonale Rahmenlinien mit Hilfe von VBA
22.12.2016 08:51:10
Michael
Danke für die rasche Rückmeldung. Leider war ich in meiner Schilderung nicht präzise genug.
In der Spalte A stehen Wochentage, in der Spalte B kann ein "x" eingetragen werden. In der Spalte C steht in der Folge "ja", wenn es sich um einen Samstag handelt oder um einen Sonntag handelt oder in der Spalte B ein "x" eingetragen ist.
Und ich hätte nun gerne, dass ein "ja" bewirkt, dass die Wochentagszelle diagonal gestrichen wird.
Anzeige
AW: Diagonale Rahmenlinien mit Hilfe von VBA
22.12.2016 09:16:12
Hajo_Zi
nur wenige sehen Deine Datei. Man könnte vermuten bei ja steht eine Formel.
Ich baue keine Datei nach. Die Zeit hat schon jemand investiert.
Ein Nachbau sieht meist anders aus als das Original.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target = "x" Then
With Target.Offset(0, 1)
With .Borders(xlDiagonalUp)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With .Borders(xlDiagonalDown)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
End With
Else
With Target.Offset(0, 1)
.Borders(xlDiagonalUp).LineStyle = xlNone
.Borders(xlDiagonalDown).LineStyle = xlNone
End With
End If
End Sub

Anzeige
AW: Diagonale Rahmenlinien mit Hilfe von VBA
22.12.2016 10:05:41
Michael
Vielen Dank nochmals für die rasche Rückmeldung und die Hilfe.
AW: Diagonale Rahmenlinien mit Hilfe von VBA
22.12.2016 08:47:33
Christian
hallo Michael,

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 3 Then Exit Sub
With Target
If .Value = "ja" Then
With .Offset(0, -2).Borders(xlDiagonalUp)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With .Offset(0, -2).Borders(xlDiagonalDown)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
Else
.Offset(0, -2).Borders(xlDiagonalUp).LineStyle = xlNone
.Offset(0, -2).Borders(xlDiagonalDown).LineStyle = xlNone
End If
End With
End Sub
Gruß
Christian
Anzeige
AW: Diagonale Rahmenlinien mit Hilfe von VBA
22.12.2016 10:07:08
Michael
Vielen Dank nochmals für die rasche Rückmeldung und die Hilfe.
Folgendes reicht:
22.12.2016 09:22:54
RPP63
Moin!
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i&
If Target.Column <> 3 Then Exit Sub
With Target
   For i = 5 To 6
      If .Value = "ja" Then
         .Offset(0, -2).Borders(i).LineStyle = xlContinuous
      Else
         .Offset(0, -2).Borders(i).LineStyle = xlNone
      End If
   Next
End With
End Sub
Gruß Ralf
Anzeige
AW: Folgendes reicht:
22.12.2016 10:06:19
Michael
Vielen Dank nochmals für die rasche Rückmeldung und die Hilfe.
AW: Folgendes reicht:
22.12.2016 10:06:47
Michael
Vielen Dank nochmals für die rasche Rückmeldung und die Hilfe.

;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Diagonale Rahmenlinien in Excel mit VBA erstellen


Schritt-für-Schritt-Anleitung

  1. Öffne deine Excel-Datei und drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Finde das Arbeitsblatt, in dem du die diagonalen Rahmenlinien hinzufügen möchtest, und doppelklicke darauf.

  3. Kopiere den folgenden Code in das Code-Fenster:

    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Column <> 3 Then Exit Sub
        With Target
            If .Value = "ja" Then
                With .Offset(0, -2).Borders(xlDiagonalUp)
                    .LineStyle = xlContinuous
                    .ColorIndex = xlAutomatic
                    .TintAndShade = 0
                    .Weight = xlThin
                End With
                With .Offset(0, -2).Borders(xlDiagonalDown)
                    .LineStyle = xlContinuous
                    .ColorIndex = xlAutomatic
                    .TintAndShade = 0
                    .Weight = xlThin
                End With
            Else
                .Offset(0, -2).Borders(xlDiagonalUp).LineStyle = xlNone
                .Offset(0, -2).Borders(xlDiagonalDown).LineStyle = xlNone
            End If
        End With
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu deiner Excel-Tabelle.

  5. Teste die Funktion: Wenn du in der Spalte C "ja" eingibst, sollte die Zelle in Spalte A diagonal durchgestreicht werden.


Häufige Fehler und Lösungen

  • Fehler: Nichts passiert, wenn ich "ja" eingebe.

    • Lösung: Überprüfe, ob der Code im richtigen Arbeitsblatt eingegeben wurde. Der Code muss im spezifischen Sheet-Modul sein.
  • Fehler: Zellen werden nicht diagonal durchgestrichen.

    • Lösung: Stelle sicher, dass du die Formatierung für die Zellen in Spalte A korrekt gesetzt hast. Die Offset-Werte müssen stimmen.

Alternative Methoden

Wenn du keine VBA-Lösungen verwenden möchtest, kannst du eine bedingte Formatierung nutzen, um Zellen visuell hervorzuheben, auch wenn diese keine diagonalen Striche unterstützt. Eine Möglichkeit ist, die Zelle mit einer Hintergrundfarbe zu füllen oder spezielle Schriftarten zu verwenden.


Praktische Beispiele

Hier ist ein einfaches Beispiel, um zu sehen, wie die VBA-Anwendung funktioniert:

  • In der Spalte A stehen Wochentage.
  • In der Spalte B kannst du ein "x" eintragen.
  • In der Spalte C wird "ja" angezeigt, wenn es sich um einen Samstag, Sonntag oder ein "x" handelt. Wenn "ja" eingegeben wird, erhält die entsprechende Zelle in Spalte A einen diagonalen Rahmen.

Tipps für Profis

  • Verwende Variablen für die Offset-Werte, um den Code flexibler zu gestalten. So kannst du schneller Anpassungen vornehmen, ohne den gesamten Code zu ändern.

  • Dokumentiere deinen VBA-Code mit Kommentaren. Das macht es einfacher, den Code später zu verstehen und zu warten.


FAQ: Häufige Fragen

1. Frage
Wie kann ich die diagonalen Linien bei anderen Bedingungen hinzufügen?
Antwort: Du kannst die Bedingungen in der If-Anweisung im VBA-Code anpassen, um andere Werte oder Bedingungen zu prüfen.

2. Frage
Funktioniert dieser VBA-Code in allen Excel-Versionen?
Antwort: Ja, der Code sollte in allen modernen Versionen von Excel funktionieren, die VBA unterstützen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige