• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

voorwaardelijke opmaak uit een bereik kopieëren

  • Onderwerp starter Onderwerp starter Remlo
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Remlo

Gebruiker
Lid geworden
20 mei 2011
Berichten
155
is het op een of andere manier mogelijk om een voorwaardelijk opmaak te kopieëren

d 9 e 9 f 9 g 9
d10 e10 f10 g10
d11 e11 f11 g11 , dit zijn de cellen welke met de opmaak moeten opgemaakt worden aan de hand van waarde in cel g10 of g11.

dit zou ik dan naar beneden en rechts willen kopieëren, wel telkens in eenzelfde bereik.
Als ik nu kopieer moet ik altijd de opmaak regels terug opmaken naar de juiste cellen.
 

Bijlagen

Kijk eens bij plakken speciaal (rechtermuisknop) hier kun je ook alleen de opmaak mee plakken .
 
pasan,

heb ik al geprobeerd maar lukt niet. Bedankt voor het meezoeken.
 
Juist omdat ik dacht dat de vraag niet duidelijk was heb ik getracht hem anders te brengen. Heb vorige ook als opgelost gezet.
Wat betreft het gebruik van $ daar zit volgens mij nu net het probleem.
IK voeg hierbij een ander bestand toe waarbij ik alle opmaken welke ik reeds heb gebprobeerd heb gewist. Enkel bij persoon 1 (tabblad wk15) werken deze correct. (Hopelijk is dit duidelijker)
Graag zou ik deze dan naar beneden kunnen kopieëren. Of een andere oplossing gebruiken.
 

Bijlagen

2 vragen:
waarom gebruik je in je opmaak G10 en G11 ipv alleen G10 of alleen G11
en mag het ook met vba opgelost worden?
 
remco, een beginnetje in D12:G14
er zit een voorwaardelijke opmaak in voor de V in D14
je moet per cel in D12:G14 de voorwaardelijke opmaak instellen.
dus niet zoals jij hebt gedaan voor de hele groep.

als je van dit gebied de opmaak kopieert kun je hem kun je hem elders plakken
succes
 

Bijlagen

Laatst bewerkt:
en zo met VBA

Code:
'naam "KleurenLijst" aangemaakt
'naam "OpmaakGebied" aangemaakt
'je kan de naam Opmaakgebied ook per blad aanmaken
'dan kun je de zelfde naam voor meerdere tabbalden gebruiken


'deze sub reageert  alleen als er slechts één cel tegelijk gewijzigd wordt. binnen het "OpmaakGebied"
'als deze sub ook moet reageren als er meer dan één cel tegelijk gewijzigd wordt vraag het dan

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim R As Range
    If Target.Cells.Count > 1 Then Exit Sub
    If Intersect(Target, Range("OpmaakGebied")) Is Nothing Then Exit Sub
    If (Target.Row - Range("OpmaakGebied").Row + 1) Mod 3 = 0 And (Target.Column - Range("OpmaakGebied").Column + 1) Mod 4 = 0 Then
        For Each R In Range("KleurenLijst")
            If Target = R Then
                Range(Target.Offset(-2, -3), Target).Interior.Color = R.Interior.Color
                Exit Sub
            End If
        Next R
    End If
End Sub
 

Bijlagen

Laatst bewerkt:
hier de verbeterde versie:
Code:
'naam "KleurenLijst" aangemaakt
'naam "OpmaakGebied" aangemaakt

'je kan de naam "OpmaakGebied" ook per blad aanmaken
'dan kun je de zelfde naam voor meerdere tabbalden gebruiken

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim R As Range, Gebied As Range, Kleur As Range
    Set Gebied = Intersect(Target, Range("OpmaakGebied")) 'Gebied is doorsnede van je selectie en "OpmaakGebied"
    If Gebied Is Nothing Then Exit Sub
    For Each R In Gebied
        If (R.Row - Range("OpmaakGebied").Row + 1) Mod 3 = 0 And (R.Column - Range("OpmaakGebied").Column + 1) Mod 4 = 0 Then
         'staat R rechtsonder in een subgebiedje ? dan bepaald de inhoud van R de kleur van het subgebied
           For Each Kleur In Range("KleurenLijst") 'zoek in de kleurenlijst naar de overeenkomst met R
                If R = Kleur Then 'klopt de inhoud van R met de Kleur ? dan subgebied kleuren
                    Range(R.Offset(-2, -3), R).Interior.Color = Kleur.Interior.Color
                    Exit For
                End If
            Next Kleur
        End If
    Next R
End Sub
deze reageert ook als je meerdere cellen tegelijk veranderd
 

Bijlagen

Sylvester, hartelijk dank voor beide oplossingen. De eerste kan ik met mijn kennis excel volgen, en dom van me om er niet aan te denken.
Je tweede oplossing ga ik eens trachten te doorgronden... ben een leek in VBA.
 
Sylvester,
Heb zelf geprobeerd je VBA aan te passen zodat ook de cel boven de onderste rechts, welke vanuit een ander blad een van dezelfde waarden kan krijgen als de onderste rechts, dit ook zou werken.
Maar uiteraard lukt me dat niet. Zoals aangegeven geen kennis VBA. Ik wou dit doen om het bestand al niet zwaarder te maken dan het is. Ik bedoel hiermee dat de formule in VBA minder rekenkracht vraagt dan de andere oplossing.
Of zie ik dit verkeerd. Het gaat namelijk om een weekrooster voor 20 tal personen met 52 tabbladen. (1per week). Om dit mooi te maken heb ik de beginnersfout gemaakt, om geen foutmeldingen te krijgen maar lege cellen door de formule te testen op een fout en dan opnieuw te laten berekenen. Momenteel zie ik het niet zitten om deze fout recht te zetten. Maar hou er bij nieuwe projecten zeker rekening mee.
 
Ik heb dit werkend kunnen overbrengen naar mijn originele bestand. Er is echter een probleem met het vakje midden rechts in het bereik. Dit wordt namelijk door een zoekfunctie van een tablad invoer vakantie ingevuld (met 1 van de waarden uit KleurenLijst). De waarde wordt er wel ingeplaatst maar het bereik wordt niet gekleurd. Als je handmatig dezelfde waarde in de cel zet werkt dit wel.
Het vakje rechtonder wordt gebruikt in de lopende week, terwijl het vakje midden rechts zijn waarden uit een tablad invoer_vakantie haalt wat heel wat op voorhand kan ingegeven worden.
 
Maak van
Code:
If R = Kleur Or R(1, 0) = Kleur
eens
Code:
If R.Value = Kleur Or R(1, 0).Value = Kleur
 
VenA, fijn dat je mee zoekt!
we gebruiken nu deze code:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim R As Range, Gebied As Range, Kleur As Range, KleurGebied As Range, Rrij As Integer, Rkolom As Integer
    Dim R1 As Range, R2 As Range, R3 As Range, Opmaakgebied As Range
    Set Opmaakgebied = Range("D9:AA62")
    Set Gebied = Intersect(Target, Opmaakgebied) 'Gebied is doorsnede van je selectie en "OpmaakGebied"
    If Gebied Is Nothing Then Exit Sub
    For Each R In Gebied
        Rrij = (R.Row - Opmaakgebied.Row + 1) Mod 3
        Rkolom = (R.Column - Opmaakgebied.Column + 1) Mod 4
        'stel KleurGebied vast waarin de verandering plaats vond
        If (Rrij = 1 And Rkolom = 1) Then           'links boven (tijd)
            Set KleurGebied = Range(R, R(3, 4))
        ElseIf (Rrij = 0 And Rkolom = 0) Then       'Rechts onder (soort)
            Set KleurGebied = Range(R(-1, -2), R)
        ElseIf (Rrij = 2 And Rkolom = 0) Then       'rechts midden (soort)
            Set KleurGebied = Range(R(0, -2), R(2, 1))
        End If
        If Not KleurGebied Is Nothing Then
            Set R1 = KleurGebied(1, 1)  'links boven (tijd)
            Set R2 = KleurGebied(3, 4)  'Rechts onder (soort)
            Set R3 = KleurGebied(2, 4)  'rechts midden (soort)
            If R1 = "" Then
                KleurGebied.Interior.Color = 14806254 'kleur grijs
            ElseIf R2 = "" Then
                KleurGebied.Interior.Color = ZoekKleur(R3) 'kleur is kleur R3
            Else
                KleurGebied.Interior.Color = ZoekKleur(R2) 'kleur is kleur R2
            End If
        End If
    Next R
End Sub
Private Function ZoekKleur(R As Range) As Long
    On Error GoTo eind
    ZoekKleur = Range("KleurenLijst")(WorksheetFunction.Match(R, Range("KleurenLijst"), 0), 1).Interior.Color
    On Error GoTo 0
    Exit Function
eind:
    On Error GoTo 0
    ZoekKleur = 16777215
End Function
 
staat in de macro waarmee je de "middencel" aanstuurt:
Code:
Application.EnableEvents = False
?
dan dan wordt "Private Sub Worksheet_Change(ByVal Target As Range)" niet aangeroepen
 
Laatst bewerkt:
Het vakje midden rechts wordt gewoon met een zoekfunctie ingevuld, niet met een macro.
 
Misschien eens even een update van jouw bestand plaatsen met wat je zoal geprobeerd hebt. Vakje midden rechts is? Bij mij bestaat excel uit rijen en kolommen. De combinatie van deze twee geeft een vakje ook wel een cel genoemd. De eerste die je links boven tegenkomt is A1. Midden rechts kan overal zijn!
 
VenA, in post 12 staat een bestand. en in post 16 staat de macro waar het om gaat.

Remlo, ik wist nog niet dat de Worksheet_Change niet getriggert wert als de waarde door een function verandert.
als die waarde door een macro veranderd gaat Worksheet_Change wet werken.
dus ik kan je voor deze cel met formule niet helpen aan een macro om de kleur aan te passen.
ik denk dat je voorwaardelijke opmaak nodig hebt voor deze cel. (dan zou ik helemaal overstappen op Voorwaardelijke opmaak)
hoe ziet die formule er uit?
misschien kan daar een macro voor gemaakt worden.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan