Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Mutt

    senior tag

    válasz HREH #44056 üzenetére

    Szia,

    Delila válasza mellett itt egy UDF, amit feltételes formázásban használhatsz.

    Function CellaSzinek(rng As Range, Optional szinkod As String, Optional mutasd As Boolean)
    'cella színének változása nem eredményezi a képletek újra kiértekélését
    Application.Volatile

    Dim cella As Range
    Dim szin As Long

    If mutasd Then
    CellaSzinek = CStr(rng.Range("A1").Interior.Color)
    Else
    CellaSzinek = True 'megelőlegezzük hogy a tartomány színe azonos

    'ha nincs meg adva a viszonyításhoz színkód, akkor használjuk a tartomány elsõ cellájának színét
    If szinkod = "" Then
    szin = rng.Range("A1").Interior.Color
    Else
    szin = CLng(szinkod)
    End If

    For Each cella In rng
    If cella.Interior.Color <> szin Then 'ha eltérés van akkor kilépünk a ciklusból
    CellaSzinek = False
    Exit For
    End If
    Next cella
    End If

    End Function

    Túlzásba vittem, mert 3 módon lehet használni.

    - Ha csak 1 paramétert (a vizsgálandó tartományt) adsz meg, akkor a tartomány első cellájánák színéhez hasonlítja a többit. Ha azonosak, akkor IGAZ eredményt ad vissza.
    - Ha 2 paramétert adsz meg, ahol a második az adott színkód macskakörmök között amelyet keresel, akkor pedig IGAZ lesz az eredmény, ha a tartományban a cellák színe azonos a megadottal.
    - Ha a harmadik paraméter IGAZ, akkor pedig a kijelölt tartomány első cellájának színkódját kapod meg.

    üdv

  • Delila_1

    veterán

    válasz HREH #44056 üzenetére

    Mi a bevitel menete?
    Beírod a számot a D oszlopba, majd színezed a G:I oszlopokat?

    Legjobb lenne, ha a 3 cella színezését adnád meg először, majd beírnád a D oszlopba az értéket. Ebben az esetben a D oszlopba írást figyeltethetném. Amint beírod az értéket, arra a sorra lefutna a színezés.

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim sor As Long

    If Target.Row > 2 And Target.Column = 4 Then
    sor = Target.Row
    If Cells(sor, 7).Interior.Color = vbGreen And Cells(sor, 8).Interior.Color = vbGreen And _
    Cells(sor, 9).Interior.Color = vbGreen Then
    Cells(sor, 4).Interior.Color = vbGreen
    Else
    Cells(sor, 4).Interior.Color = RGB(255, 198, 83)
    End If
    End If
    End Sub

Új hozzászólás Aktív témák