VBA-code ' achter ' een werkblad of een werkmap werkt mogelijk niet in Excel


Zie 157346 voor een versie van dit artikel voor Microsoft Excel 97.Zie 182482 voor een versie van dit artikel voor Microsoft Excel 98.

Symptomen


Microsoft Office Excel, Microsoft Visual Basic for Applications (VBA)-macrocode die zich achter een werkblad of werkmap bevindt, werkt mogelijk niet goed.

Oorzaak


Dit gebeurt als aan de volgende voorwaarden is voldaan:
  • De programmacode is opgenomen in een automatisch uitgevoerde subroutine, zoals een Auto_Open -of Auto_Close -subroutine.
  • De code is niet opgenomen in een Visual Basic-module, maar ' achter ' een werkblad of de werkmap zelf.

Workaround


Om te voorkomen dat subroutines automatisch worden uitgevoerd voor een juiste werking in Microsoft Excel, moeten deze zich in een Visual Basic-module bevinden. U moet een Visual Basic-module invoegen in de werkmap en vervolgens de code in de nieuwe module plaatsen. Een Visual Basic-module invoegen:
  1. Activeer in project Verkenner in de Visual Basic editor de werkmap met de betreffende code.
  2. Klik op Module in het menu Invoegen.
Wanneer de nieuwe module is ingevoegd, knipt u de code van de oorspronkelijke locatie en plakt u deze in de Visual Basic-module. Vervolgens slaat u de werkmap op.

Meer informatie


In Excel kunt u VBA-code op drie verschillende locaties opslaan: in een Visual Basic-module, in een visuele basisklassen module, en ' achter ' werkbladen en werkmappen. Code ' achter ' een werkblad of werkmap bewerken:
  1. Activeer de Visual Basic Editor (druk op ALT + F11).
  2. In het venster project Verkenner ziet u de items die er ongeveer als volgt uitzien:
         VBAProject (Book1)         Microsoft Excel Objects            Sheet1 (Sheet1)            Sheet2 (Sheet2)            Sheet3 (Sheet3)            ThisWorkbook                  Modules             Module1 
Als u dubbelklikt op een van de namen van werkbladen of ThisWorkbook, kunt u code typen in het venster programmacode. De code die niet wordt vermeld in een Visual Basic-module, wordt beschouwd als ' achter ' het werkblad ofThisWorkbook . Als een Auto_Open, Auto_Closeof een andere automatische uitvoering van een subroutine automatisch wordt opgeslagen ' achter ' een werkblad of ThisWorkbook, werkt het mogelijk niet goed wanneer u de werkmap opent of sluit, of wanneer u een actie uitvoert waarmee de subroutine kan worden uitgevoerd.