Pogojno oblikovanje

Pomoč pri delu z MS Excelom
Odgovori
zvonem
Prispevkov: 95
Pridružen: Če Sep 29, 2005 10:54 pm

Pogojno oblikovanje

Odgovor Napisal/-a zvonem »

Pozdravljeni! Imam Excel 2003. V stolpec "I" vpisujem številke od 1 do 5. Glede na to številko bi rad, da se vse celice od "A" do "H" obarvajo glede na vrednost v stolpcu "I". Npr: v celici "I1 " imam vrednost 1, potem se morajo vse celico desno od nje obarvati zeleno, če vpišem 2 se morajo obarvati rdeče ... itd. Torej imam pogojno oblikovanje s petimi pogoji. Posnel sem spodnji makro, pa mi obarva samo prvo desno celico; če ga petkrat zaporedoma sprožim, mi obarva vse željene celice, vendar ... to velja samo za celico "I4" in samo za to vrstico :oops:

Koda: Izberi vse

Sub Barva1()
'
    ActiveCell.Offset(0, -1).Select
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$I$4=1"
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1).Interior
        .PatternColorIndex = xlAutomatic
        .Color = 5296274
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).StopIfTrue = True

End Sub
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: Pogojno oblikovanje

Odgovor Napisal/-a admin »

Pozdravljeni,

Pravite, da uporabljate Excel 2003 - v tem primeru vam Pogojno oblikovanje prav nič ne pomaga, saj lahko v Excelu 2003 določite samo 3 pogoje, vi pa pravite, da jih potrebujete 5. Pa tudi sicer je nesmiselno z VBA funkcijo določati pogoje pogojnega oblikovanja. Ko namreč enkrat določite pogoje pogojnega oblikovanja, potem ne potrebujete VBA kode, saj bo pogojno oblikovanje barvalo celice glede na vaše želje. Če pa uporabljate VBA kodo, patem pa ne potrebujete pogojnega oblikovanja, saj bo VBA koda zadolžena za barvanje celic.

Torej problema ste se lotili povsem na napačnem koncu. Napisati morate preprosto VBA kodo, ki ob spremembi celice v koloni I obarva kolone od A do H. Uporabiti morate torej odziv na dogodek spremembe vsebine celice Worksheet_Change. Po forumu poiščite tematike, ki obravnavajo dogodek Worksheet_Change, spodaj pa vam podajam rešitev vašega problema (barve sem si pa seveda kar izmislil!):

Koda: Izberi vse

'
' www.matjazev.net
' december 2013
'
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim rng As Range, r
  
  Set rng = Intersect(Target, Range("I:I"))
  If (Not rng Is Nothing) Then
    For Each r In rng.Rows
      With Range(Cells(r.Row, 1), Cells(r.Row, 8)).Interior
        .Pattern = xlSolid
        If (Cells(r.Row, 9) > 0) And (Cells(r.Row, 9) < 6) Then
          .ColorIndex = 2 * Cells(r.Row, 9) + 1
        Else
          .ColorIndex = xlNone
        End If
      End With
    Next
  End If
End Sub
lp,
Matjaž Prtenjak
Administrator
zvonem
Prispevkov: 95
Pridružen: Če Sep 29, 2005 10:54 pm

Re: Pogojno oblikovanje

Odgovor Napisal/-a zvonem »

Se mi je kar zdelo, da že v osnovi brcam v meglo :oops: Matjaž, Hvala! Tole sem potreboval :D
Odgovori