2017-04-11 4 views
2

Ich muss abhängig von den geladenen Daten drei Spalten formatieren, die sich nach links/rechts bewegen. Bedingung ist, wenn der Zellenwert leer ist (=""). Ich habe wirklich Mühe, diesen herauszufinden.Bedingte Formatierung bei Änderung des Bereichs

Hier ist mein Setup:

Sub Conditional_Format() 
    Dim ws2 As Worksheet 
    Dim lRow3 As Long, lCol3 As Long 
    Dim rng8 As Range, rng9 As Range 

    Set ws2 = Worksheets("Unfav GT500 Comments") 

    With ws2 
     lRow3 = .Range("A" & .Rows.Count).End(xlUp).Row 
     lCol3 = .Cells(3, .Columns.Count).End(xlToLeft).Column 

     Set rng8 = .Range(.Cells(4, lCol3 - 2), .Cells(lRow3 - 1, lCol3 - 1)) 
     Set rng9 = .Range(.Cells(4, lCol3), .Cells(lRow3 - 1, lCol3)) 
    End With 
End Sub 
+0

Sie vermissen ein 'End With', erstens. Außerdem brauchst du 'Dim' vor' rng8'. Wie sehen Ihre Daten aus? Wo suchen Sie nach der leeren Zelle? Dein Beitrag scheint etwas zu fehlen. – BruceWayne

+0

Warum müssen Sie VBA verwenden? Außerdem sehe ich keine Codezeile, die den CF ausführt. Was genau willst du erreichen? – L42

Antwort

1

Für dynamisch ändernden Bereiche, schlage ich vor, die Spalten eine Suche ersten Standort mit. Gibt es einen festen eindeutigen Spaltentitel, nach dem Sie suchen, und in einem bestimmten Bereich der Tabelle? Wenn ja, verwenden Sie die unten, um danach zu suchen. Sie können das Format und die Spaltenüberschrift an Ihre Daten anpassen.

'Below row will get you the column header. Repeat this line to search for the three columns. 
ws2.Cells.Find(What:="Specific_Column_Header", LookIn:= xlValues).Activate 
startrow = ActiveCell.Row 

For row1 = startrow to ws2.Cells(.Rows.Count, "A").End(xlUp).Row 
    If Cells(row1, ActiveCell.Column) = "" Then 
     'Set your format here 
     Cells(row1,ActiveCell.Column).Select 
     With Selection.Interior 
      .Pattern = xlSolid 
      .ThemeColor = xlThemeColorDark1 
      .TintAndShade = -0.15 
     End With 
    End If 
Next 
+0

Danke, mein Herr! Super hilfreich. – ERKSMTY