Hoe pak ik dit aan in VBA ?

Status
Niet open voor verdere reacties.

willema

Gebruiker
Lid geworden
26 aug 2005
Berichten
308
Beste forumleden,

Voor ik verder knoei ;) graag jullie gewaardeerd advies :thumb::

Op een werkblad heb ik twee knoppen met daaronder telkens een subroutine die de opmaak van dat blad verandert.

Datzelfde werkblad start ook een aantal routines na Worksheet_Change en na Worksheet_SelectionChange.
Die routines horen eigenlijk bij elkaar. Wanneer een waarde wordt aangepast in een cel worden de routines onder Worksheet_Change uitgevoerd en als daarna de cel wordt verlaten worden de routines onder Worksheet_SelectionChange uitgevoerd.

Dat werkt prima. Maar...

Als een waarde wordt aangepast in een cel (en de routines onder Worksheet_Change worden uitgevoerd),
dan is het nu mogelijk om de knoppen te gebruiken (en onderliggende code uit te voeren)
vóór de cel wordt verlaten (en de routines onder Worksheet_ChangeSelection worden uitgevoerd).

Dat leidt tot een verkeerde opmaak.

Hoe pak ik dit best aan, dat de knoppen niet werken tussen Worksheet_Change en Worksheet_ChangeSelection ?

Ik heb één (mislukte) poging gedaan:
Ik heb een Boolean-waarde (ChangeVal) gedeclareerd op moduleniveau en die op False gezet aan het begin van zo'n subroutine die wordt gestart na Worksheet_Change.
Ik heb die tevens op True gezet aan het einde van zo'n subroutine die wordt gestart na Worksheet_ChangeSelection.
Vervolgens heb ik in de code onder de knoppen (in dezelfde module) dit opgenomen:

Code:
If ChangeVal = False Then Exit Sub

Maar dat werkt niet.
De eerste keer wel, maar een test-MsgBox vertelt me dat die waarde daarna op True blijft staan.

Wellicht zit ik helemaal op de verkeerde piste en wordt dit op een andere manier aangepakt.

Groeten,
Marnik
 
Laatst bewerkt:
In verband met bovenstaande vraag heb ik iets vreemds ontdekt: :shocked:

Ik heb op twee PC's een kopie van identiek hetzelfde Excel-bestand geopend. De ene PC heeft Excel 2007 (Windows Vista) en de andere laptop Excel 2010 (Windows 7).
Bovenstaand probleem had ik bij uitvoering op de laptop met Excel 2010 (Windows 7). En van daar uit mijn vraag hierboven.

Echter op de PC met Excel 2007 (Windows Vista) doet zich het probleem NIET voor.
Als ik op die PC een waarde wijzig in een cel is het onmogelijk om op eender welke CmdButton te drukken vóór het bevestigen van die waarde met een druk op return/enter. Die knop doet gewoon niets en zo hoort het.

Op de laptop met Excel 2010 (Windows 7) doet zich het probleem (zie vraagstelling hierboven) WEL voor.
Als ik op die laptop een waarde wijzig in een cel is het wel mogelijk om op eender welke CmdButton te drukken vóór het bevestigen van die waarde met een druk op return/enter. Die knop voert dan onderliggende code uit en dat wil ik niet voor dat die waarde wordt bevestigd.

Is dat een verschil tussen Excel 2007/2010 of een bug of een optie die niet identiek in beide versies is ingesteld ?

Groeten,
Marnik
 
Ik heb geprobeerd om de vraag duidelijker te stellen in de post:
"Iets vreemd met een identiek .xlsm-bestand (met VBA) op twee verschillende PC's."
En zet dan ook de status van deze vraag op opgelost. De moderator mag deze vraag indien mogelijk verwijderen.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan