De informatie in dit artikel is van toepassing op:
- Microsoft Publisher 2002 Standard Edition
Dit artikel is eerder gepubliceerd onder NL289085
Symptomen
Opdrachtknoppen op gebruikersformulieren voeren niet de bedoelde acties uit. Dit probleem kan optreden in de volgende gevallen:
- Het gebruikersformulier is modaal.
- Het gebruikersformulier wordt weergegeven als onderdeel van de uitvoering van een macro die wordt gestart vanuit het snelmenu Macro's.
Oorzaak
Wanneer u een gebruikersformulier van Microsoft Visual Basic for Applications start vanuit het dialoogvenster Macro's, bevindt Microsoft Publisher zich in een status die als modaal wordt aangeduid. In dat geval worden alle gebeurtenissen in de Visual Basic-editor stilgezet. Formulieren werken niet omdat de Visual Basic-editor niet op gebeurtenissen reageert wanneer Publisher de modale status heeft.
De macro's die u aan het formulier hebt gekoppeld, werken niet wanneer Publisher zich in de modale status bevindt.Workaround
Ga op een van de volgende manieren te werk om dit probleem te omzeilen:
- Koppel de macro waarmee het gebruikersformulier wordt geopend, aan een gebeurtenis voor de publicatie, bijvoorbeeld de gebeurtenis Open Documwnr.
- Open een 'laad'-formulier in de modusloze status en laad vervolgens het hoofdformulier in de volledig modale status vanaf het laadformulier.
- Open het formulier in de modusloze status.
Methode 1: Koppel de macro aan een gebeurtenis
Ga als volgt te werk om de macro te koppelen aan de gebeurtenis Open van het document:
- Start Microsoft Publisher 2002 en open het document met de macro die u wilt uitvoeren.
- Druk op ALT+F11 om de Visual Basic-editor te openen.
- Vouw in het Project-venster het pad Project/Microsoft Publisher Objects/ThisDocument uit en dubbelklik op ThisDocument.
- Klik op Document in de lijst Object.
- Klik op Open in de lijst Procedure.
- Typ de code waarmee het gebruikersformulier wordt geladen, zoals in het volgende voorbeeld:
Private Sub Document_Open() Load UserForm1 UserForm1.Show vbModalEnd Sub
- Sluit de Visual Basic-editor, sla het document op en sluit het document.
- Open de publicatie opnieuw.
Afhankelijk van de instelling voor Macrobeveiliging kan de macroviruswaarschuwing worden weergegeven. Klik op Inschakelen.
Het gebruikersformulier wordt weergegeven.
Methode 2: Open het gebruikersformulier met een laadformulier
Ga als volgt te werk om het formulier te openen met een laadformulier:
- Start Microsoft Publisher 2002 en open het document dat de macro bevat.
- Wijs Macro aan in het menu Extra en klik op Visual Basic-editor.
- Klik op UserForm in het menu Invoegen.
- Klik op het besturingselement Opdrachtknop in de Werkset en voeg dit aan het nieuwe formulier toe. Breng de gewenste wijzigingen aan in het formulier en de knop.
- Dubbelklik op de Opdrachtknop.
Het venster Code wordt geopend met de gebeurtenissubroutine Command Button Click. - Wijzig de subroutine zodat deze er als volgt uitziet:
Private Sub CommandButton1_Click() Unload UserForm2 Load UserForm1 UserForm1.Show vbModalEnd Sub
Hierbij is CommandButton1 de knop op het laadformulier, UserForm1 het hoofdgebruikersformulier en UserForm2 het laadformulier. - Open in het Project-venster de module met de code waarmee het hoofdgebruikersformulier wordt geladen.
- Zoek naar de volgende coderegels:
Load UserForm1 . . . UserForm1.Show VBModal
waarbij UserForm1 het hoofdgebruikersformulier is. - Wijzig de coderegels zodat deze er als volgt uitzien:
Load UserForm2 . . . UserForm2.Show VBModeless
waarbij UserForm2 het laadformulier is dat u zojuist hebt gemaakt.
Methode 3: Open het gebruikersformulier met de optie voor de modusloze status
Ga als volgt te werk om het formulier te openen met de optie voor de modusloze status:
- Start Microsoft Publisher 2002 en open het document dat de macro bevat.
- Wijs Macro aan in het menu Extra en klik op Macro's.
- Selecteer in de lijst Macronaam de macro waarmee het gebruikersformulier wordt geopend en klik op Bewerken.
- Zoek naar de coderegel waarmee het gebruikersformulier wordt geopend, bijvoorbeeld
<formuliernaam>.Show
waarbij <formuliernaam> de naam is van het gebruikersformulier dat wordt weergegeven. - Wijzig de regel door vbModalte vervangen door vbModeless.
Status
Microsoft heeft bevestigd dat dit probleem kan optreden in de Microsoft-producten die aan het begin van dit artikel werden vermeld.
Meer informatie
Als u de module start vanuit de Visual Basic-editor, wordt deze zonder problemen uitgevoerd. Dit geldt ook voor het dialoogvenster Macro, als het formulier de modusloze status heeft (hetgeen vaak niet mogelijk is).
Gebruikersformulieren en andere vensters kunnen worden geopend in de modale of modusloze status. Wanneer een venster modaal is, kan geen ander venster worden geactiveerd zolang het modale venster geopend is. Waarschuwingsberichten en andere venster met belangrijke meldingen zijn doorgaans modaal. De meeste andere vensters hebben geen modus, hetgeen wil zeggen dat ze op de achtergrond kunnen worden geplaatst als een ander venster wordt geactiveerd.
Wanneer een gebruikersformulier wordt geopend door een macro, kan de instructie waarmee het formulier wordt geopend, de opties vbModal of vbModeless gebruiken om te bepalen op welke wijze het formulier moet worden weergegeven. Als geen van beide opties is opgegeven, is het formulier modaal. Als een macro wordt uitgevoerd vanuit het menu Extra en als hierdoor een gebruikersformulier in de modale status wordt geopend, worden de acties van de macro onderbroken zolang het formulier geopend is. Het resultaat is dat de acties voor de opdrachtknop niet worden uitgevoerd. Dit probleem treedt niet op als de macro waarmee het formulier wordt geopend, wordt gestart via een gebeurtenis zoals de gebeurtenis Open van het document.