
Díky za váš čas pánové. Jak píše Zbygi, tak mi řešení od JoKe taky nefunguje. Zbygiho řešení funguje, ale našel jsem ještě jedno řešení, které funguje ještě lépe.
Není to bohužel z mé hlavy a upřímně řečeno, úplně do detailu tomu kódu nerozumím.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Set rng = Range("A1:F10")
If Not Intersect(Target, rng) Is Nothing Then
With rng.FormatConditions
.Delete
.Add xlNoBlanksCondition
End With
With rng.FormatConditions(1)
.Borders.LineStyle = xlContinuous
With .Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent3
.TintAndShade = 0.399975585192419
.PatternTintAndShade = 0
End With
End With
End If
End Sub

Pomohl by mi to prosím někdo trochu ozřejmit?
rozumím tomu zhruba takhle:
-Jedná se o událostní proceduru, která se spouští při každé změně příslušného listu.
-Proměnné rng je přiřazeno pole A1:F10
- pokud neexistuje průnik mezi "Target" a rng, bude formátování smazáno (zde netuším, co je to target resp co obsahuje target... beru to logicky jako test, zda je označená buňka v uvedeném poli prázdná. Mohl by mi někdo blíže vysvětlit ten target (je to proměnná? jak se plní hodnotami? jak funguje?)
- rng.FormatConditions(1) ta jednička na konci v závorce funguje jako else k podmínce If (If Not Intersect(Target, rng) Is Nothing Then)? Jedná se jen o nějaký zjednodušený zápis?
díky moc