Werkblad aanroepen op Codenaam

Status
Niet open voor verdere reacties.

bob333

Gebruiker
Lid geworden
1 sep 2011
Berichten
19
Hallo,

Ik ben bezig met een excel-document met allerlei macro's die daarin verwerkt zijn.
Ik wil alleen dat het gecreëerde document zo moeilijk mogelijk te verknallen is door de gebruikers.

Het grootste probleem waar ik nu tegen aan loop is dat als iemand de naam van een werkblad aanpast mijn macro's niet meer werken.

Ik definieer mijn werkbladen waar de code van toepassing op is als volgt:
Dim Werkblad_Gegevens As Worksheet
Set Werkblad_Gegevens = ThisWorkbook.Worksheets("Gegevens")

lastrow = Werkblad_Gegevens.Cells(Werkblad_Gegevens.Rows.Count, "B").End(xlUp).Row
etc.

Ik wil graag gebruik maken van de codenaam van de desbetreffende werkblad.
Nu lees ik dat ik deze kan aanroepen door de codenaam op te schrijven en dan gewoon een punt erachter te zetten.

Bijvoorbeeld Gegevens.range("A1").select

Als ik 2 exceldocumenten open heb staan met beide een werkblad die Gegevens heet, dan voorkom ik verwarring door het werkblad aan te spreken met Thisworkbook of activeworkbook etc.
Weet iemand hoe krijg ik dat voor elkaar met het gebruik van codenamen? Het lukt mij niet om daar Thisworkbook of eventueel een verwijzing naar een ander document te maken of hoeft dat niet en weet Excel precies welk blad in welk document ik bedoel?

Bob
 
Er vanuit gaande dat de codenaam Sheet1 is zou je dit kunnen doen:
Code:
Set Werkblad_Gegevens = ThisWorkbook.Worksheets(Sheet1.Name)
 
In de VBA editor zie je bij Objecten (Links in de lijst) de bladnamen. Daarvoor stad, afhankelijk van je versie, Sheet1 of Blad1. Die kun je gebruiken, dan blijft de macro werken, ook als de bladnaam gewijzigd wordt.

Voorbeeld:

Code:
ThisWorkbook.Sheets("Gegevens"). Activate

wordt:

Code:
ThisWorkbook.Blad3.Activate

en ipv ThisWorkBook kun je natuurlijk de naam van je werkboek gebruiken.
 
Goedendag,

Excuus voor de late reactie. Ik verwachtte een automatische mail als er iemand had gereageerd op dit topic.
Deze heb ik noiet ontvangen dus ging ervan uit dat niemand het wist.

Bedankt voor jullie antwoord. Ik ga dit gelijk aanpassen in mijn scripts.

Bob
 
Wat niet werkt:

Code:
ThisWorkbook.Sheet1.Activate

Wat ook niet werkt:
Code:
ActiveWorkbook.Sheet1.Activate

Wat wel werkt:

Code:
Sheet1.Activate

Wat je altijd moet vermijden in VBA: "Activate' en 'Select'
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan