Microsoft Excel

Herbers Excel/VBA-Archiv

Bedingte Formatierung mit VBA


Betrifft: Bedingte Formatierung mit VBA von: Georg Ruber
Geschrieben am: 21.09.2017 10:00:32

Hallo liebe MitgliederInnen,
folgender Code:

Private Sub Worksheet_Change(ByVal Target As range)
  
  On Error GoTo ERREXIT
  Application.EnableEvents = False
  Select Case Target.Column
    Case 11 'K
      Select Case Target.Value
        Case Is = "AU ganztägig", "AU untertägig", "Urlaub"
          Cells(Target.Row, 4).Resize(, 3).ClearContents 'D:F löschen
      End Select
      
    Case 4 To 6 'D:F
      Select Case Cells(Target.Row, 11)
        Case Is = "AU ganztägig", "AU untertägig", "Urlaub"
          Target.ClearContents
      End Select
  
   Case 4 To 6 'D:F
      Select Case Cells(Target.Row, 11)
        Case Is = "AU ganztägig", "AU untertägig", "Urlaub"
        Target.FormatConditions(1).Interior
        .Pattern = xlGray16
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = -4.99893185216834E-02
        End Select

  End Select
ERREXIT:
  Application.EnableEvents = True
End Sub
Was nicht passt, ist die Formatierung (es passiert nix). Was ich möchte: Steht einer der Cases "Urlaub" etc... z. B. in K5 drin, soll D5:F5 entsprechend formatiert werden! Was mache ich falsch?
Danke. Georg

  

Betrifft: AW: Bedingte Formatierung mit VBA von: ChrisL
Geschrieben am: 21.09.2017 10:15:13

Hi Georg

Die Datei für den Test nach zu bauen ist mir zu mühsam, aber vielleicht hilft:
https://support.microsoft.com/de-ch/help/895562/the-conditional-formatting-may-be-set-incorrectly-when-you-use-vba-in

cu
Chris


  

Betrifft: AW: Bedingte Formatierung mit VBA von: Georg
Geschrieben am: 21.09.2017 10:38:31

Danke für den Tipp, nur ich komme mit der MS Hilfe auch nicht wirklich klar. Noch j-d eine Idee?


  

Betrifft: AW: Bedingte Formatierung mit VBA von: Daniel
Geschrieben am: 21.09.2017 13:47:00

Hi

kleiner Tip:
wenns nicht funktioniert wie gewünscht, als erstes den pauschalen Fehlersprung am Anfang deaktivieren.
(Hochkomma davorsetzen).
Wenn der Code beim Fehler stopt, hast du zumindest einen Anhaltspunkt, wo der Fehler liegen könnte und kannst auch das Umfeld besser prüfen.
Auch wenn du dann ggf die Events wieder von Hand aktivieren musst, solange du testest sind solche pauschalen Fehlersprünge kontraproduktiv. Die kann man dann einbauen, wenn der Code fertig ist und fehlerfrei läuft (um dann vielleicht noch irgendwelche nicht vorhersehbare Anwenderaktionen abzufangen)

beachte dass dein Code nur dann funktioniert, wenn genau eine Zelle bearbeitet wird.
umfasst Target mehrere Zellen, so wird Target.Value ein zweidimensionales Array und das kannst du nicht mehr mit Einzelwerten vergleichen.
hier müsste eine Schleife über die Zellen von Target laufen (For Each Zelle in Target) und dann die ganze Aktion mit "Zelle" anstelle von "Target" ausgeführt werden.


weiterhin hast du im Select Case 2x die gleiche Bedingung (Case 4 to 6)
von diesen beiden wird immer nur die erste ausgeführt.
Dh sobald ein Case-Fall zutreffend war, verlässt der Code das Select-Case und die nachfolgenden Case-Fälle werden gar nicht mehr überprüft.
Du müsstest hier also den Code aus dem unteren Case-Fall in den oberen mit reinpacken

gruß Daniel


Beiträge aus den Excel-Beispielen zum Thema "Bedingte Formatierung mit VBA"