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

VBA cellen voorwaardelijk beveiligen

Status
Niet open voor verdere reacties.

Rienmi

Nieuwe gebruiker
Lid geworden
16 sep 2007
Berichten
2
Hallo,

Ik ben op zoek naar een macro die het volgende kan:

Een sheet bestaat uit 2 tabbladen:
Tabblad 1 is het invoer sheet
Tabblad 2 is het profielensheet

In tabblad 1 kan in kolom M (regel 2 t/m 2000) een profielcode (met de nummers 1 t/m 100) worden geselecteerd d.m.v. validatie. In kolom N, O, P en Q van tabblad 1 staat een vert.zoekenformule van kolom M naar tabblad 2, waar de profielen staan gespecificeerd.

Omdat de data in de kolommen N t/m Q automatisch wordt gevuld heb ik alle cellen beveiligd. Alleen, indien de vert.zoekenformule in een van de cellen in kolom N t/m Q een "#" vind, dient de gebruiker handmatig deze cel te overschrijven. In alle andere gevallen moeten de cellen beveiligd blijven.

Is er een macro die automatisch (dus zonder een knop in te drukken) kijkt naar de waarde in een serie cellen (N2:Q2000) en afhankelijk van die waarde de cel beveiliging eraf haalt.

Ik hoop dat iemand voor dit lastige probleem een oplossing heeft.

Rienmi
 
Beste Riemni,

Allereerst: Welkom op dit forum. Hopelijk vind en krijg je veel bruikbare antwoorden op de vragen.
Wat je wilt kan in VBA, en dat is niet mijn sterkste kant. Maar wat je nodig hebt is meer dan hetgeen je vraagt. Want als jij een formule laat overschrijven door de gebruiker, en later wordt het profiel in kolom M weer veranderd, dan moet er in kolom N t/m Q wel weer een formule staan!

Ik zoek de oplossingen meestal in het combineren van functies.
Stel dat je hebt staan:
Code:
=VERT.ZOEKEN(M1;Blad2!A1:B187;2;0)
en deze code levert # op. Dan staat er de foutmelding #N/B. Dat betekent dat Excel de waarde niet kan vinden. NB = Niet bekend.
Dit kun je ondervangen door bijv:
Code:
=ALS(ISNB(VERT.ZOEKEN(M1;Blad2!A1:B187;2;0));R1;VERT.ZOEKEN(M1;Blad2!A1:B187;2;0))

In woorden: als de functie VERT.ZOEKEN(M1;Blad2!A1:B187;2;0) de foutmelding #N/B oplevert, neem dan de waarde over uit kolom R. Als de functie de zoekwaarde wel vindt, geef dan de gevonden waarde weer.

Je kunt eventueel via voorwaardelijke opmaak de cel in kolm R standaard rood maken als de vertikaal zoeken-functie niets oplevert. Op zo'n manier ziet de gebruiker altijd dat de cel in kolom R ingelvuld moet worden om de foutmelding te verwijderen. Jouw beveiliging kan blijven staan, en de waarde in kolom R wordt genegeerd als er in kolom N een andere zoekwaarde ingetikt wordt.

Groeten,
Richard
 
VBA sheet vullen mbv info uit ander tabblad

Bedankt voor je reactie, Richard. Je hebt gelijk met dat overschrijven. Daar had ik nog niet bij stil gestaan.
Met jouw oplossing kan het inderdaad ook, maar dan heb ik 4 extra kolommen nodig (voor de handmatige invoer t.b.v. kol N tm Q) en het liefst voeg ik geen extra kolommen toe. Als het dus met VBA kan, doe ik dat het liefst.

Ik ben een newbe met VBA, maar ik denk dat het met VBA wel mogelijk zou moeten zijn.

Misschien is het bijvoorbeeld mogelijk om de kolommen N t/m Q te laten vullen door de macro. Ik vul dan een profielcode in in kolom M. Zodra de macro ziet dat ik de profielcode invul, haalt hij automatisch de corresponderende data uit het tweede tabblad en vult N t-m Q. Deze macro doet niets met de beveiliging.

Een tweede macro kijkt naar de inhoud van de gevulde cellen in kolom N t/m Q en haalt bij "#" de beveiliging eraf, zodat de gebruiker handmatig de cel kan vullen. Indien later op die regel de code weer wijzigt, vult macro 1 de cellen weer opnieuw en zet de beveiliging er weer op. Waarna macro 2 kijkt wat de inhoud van de cellen is. enzovoort.

Groeten,,
Rienmi
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan