• 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.

1 van de 5 cellen vullen

Status
Niet open voor verdere reacties.

wilbert1967

Gebruiker
Lid geworden
19 jun 2004
Berichten
628
hallo

ik wil dat 1 van de 5 cellen wordt gevuld. Als men bv a2 een 1 zet dan mag a1, a3, a4 en a5 niet gevuld zijn. Zodra men in a5 iets in vul moet a2 leeg.

hoe kan ik dit maken? met macro of voorwaardelijk opmaak?

mvg

wilbert
 
Je moet hierbij wel laten weten welke cel de prioriteit heeft. Als jij bijvoorbeeld cel A2 en cel A4 invult, hoe weet excel dan welke cel wel en welke cel niet zichtbaar moet zijn?

Als de prioriteit van cel A1 tot A5 loopt dan kun je met voorwaardelijke opmaak het lettertype dezelfde kleur geven als de achtergrond met de formule:
Code:
=AANTALARG($A$1:A1)>1
zodat de tekst in de andere cellen niet te zien is.

Wil je dat steeds de laatst ingevulde cel wordt weergeven dan zul je moeten overstappen op VBA.
 
Laatst bewerkt:
hallo

op het moment dat je a2 invult is a4 leeg
vul je a4 in dan moet automatisch a2 leeg gaan

kleur is geen optie, want later wordt gekeken welke cel (a1 tm a5) is gevuld en dat geeft een cijfer weer in een andere cel
 
Laatst bewerkt:
wilbert1967, Plaats onderstaande VBA-code in de sheet-module waar de code van toepassng moet zijn.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim TempValue As Variant

    If Target.Column >= 1 And Target.Column <= 5 And Target.Cells.Count = 1 Then
        TempValue = Target.Value
        Application.EnableEvents = False
        Range(Cells(Target.Row, 1), Cells(Target.Row, 5)).Clear
        Target.Value = TempValue
        Application.EnableEvents = True
    End If

End Sub

Groet, Leo
 
Ah dan ben ik net te laat met mijn oplossing. Toch maar even laten zien wat ik bedacht had :)
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range

    Set KeyCells = Range("A1:A5")
    
    If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
        Application.EnableEvents = False
        For Each C In KeyCells
            If C.Address <> Target.Address Then C.ClearContents
        Next C
        Application.EnableEvents = True
    End If
End Sub

Edit: Ik zie dat de oplossing van Leo dat hij de range A1 t/m E1 bekijkt. Is het niet zo dat de range A1 tot A5 bekeken moet worden?
 
Laatst bewerkt:
Brandts, Is óók een prima methode! Sterker nog, ik zie aan jouw code dat ik 't bij het verkeerde eind had vwbt de range... Ik dacht dat er per regel in 5 kolommen gekeken moest worden, maar het is inderdaad in 1 kolom en 5 regels. (lezen is ook een vak!:eek::D)

Groet, Leo

EDIT:
Brandts zei:
Edit: Ik zie dat de oplossing van Leo dat hij de range A1 t/m E1 bekijkt. Is het niet zo dat de range A1 tot A5 bekeken moet worden?
Laatst aangepast door Brandts : Vandaag om 14:20.
Yep! Daar was ik dus óók achter gekomen....
 
Laatst bewerkt:
Ach het gaat om het idee en dat was blijkbaar al genoeg voor Wilbert.

Toch blijft het grappig om te zien hoe op verschillende manieren hetzelfde probleem aangepakt kan worde :)
 
Toch blijft het grappig om te zien hoe op verschillende manieren hetzelfde probleem aangepakt kan worde :)

Inderdaad.

Ik zou hier geen code voor gebruiken, maar Data validatie. Met een AANTAL.ALS functie erin ongeveer zoals al aan het begin van de topic al voorgesteld.

Wigi
 
Volgens mij is dit niet mogenlijk omdat steeds de laatst ingevulde cel weergeven moet worden en de andere cellen moeten volledig leeg zijn (dus niet met voorwaardelijke opmaak de tekstkleur wit maken).
 
Met de AANTAL.ALS is men verplicht om eerst de andere cel leeg te maken alvorens een andere cel gevuld kan worden.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan