VBA-bladen - De ultieme gids

Dit is de ultieme gids voor het werken met Spreadsheets / Werkbladen in Excel.

Onderaan deze handleiding hebben we een spiekbriefje gemaakt met veelvoorkomende opdrachten voor het werken met werkbladen.

Bladen versus Werkbladen

Er zijn twee manieren om naar Spreadsheets te verwijzen met VBA. De eerste is met het Spreadsheets-object:

1 Spreadsheets ("Blad1"). Activeren

De andere is met het Worksheets-object:

1 Werkbladen ("Blad1"). Activeren

99% van de tijd zijn deze twee objecten identiek. Als u online naar voorbeelden van VBA-codes hebt gezocht, hebt u waarschijnlijk beide objecten gebruikt. Hier is het verschil:

De Spreadsheets-collectie bevat werkbladen EN grafiekbladen.

Gebruik dus Spreadsheets als u gewone werkbladen EN grafiekbladen wilt opnemen. Gebruik werkbladen als u grafiekbladen wilt uitsluiten. Voor de rest van deze handleiding zullen we bladen en werkbladen door elkaar gebruiken.

Verwijzende bladen

Er zijn verschillende manieren om naar Spreadsheets te verwijzen:

  • ActiveSheet
  • Naam bladtab
  • Bladindexnummer
  • Bladcodenaam:

ActiveSheet

De ActiveSheet is de Sheet die momenteel actief is. Met andere woorden, als u uw code hebt onderbroken en naar Excel hebt gekeken, is het blad zichtbaar. In het onderstaande codevoorbeeld wordt een Messagebox weergegeven met de ActiveSheet-naam.

1 MsgBox ActiveSheet.Name

Bladnaam:

U bent waarschijnlijk het meest bekend met het verwijzen naar Spreadsheets aan de hand van hun tabbladnaam:

1 Spreadsheets ("Tabnaam"). Activeren

Bladindexnummer

Het bladindexnummer is de bladpositie in de werkmap. 1 is het eerste blad. 2 is het tweede blad enz.:

1 Bladen(1).Activeren

Bladindexnummer - Laatste blad in werkmap

Als u naar het laatste blad in de werkmap wilt verwijzen, gebruikt u Spreadsheets.Count om het laatste indexnummer te krijgen:

1 Vellen (Vellen. Tellen). Activeren

Blad “Codenaam”

De bladcodenaam is de objectnaam in VBA:

1 CodeName.Activeren

Verwijzen naar werkbladen in andere werkmappen

Het is ook gemakkelijk om naar Spreadsheets in andere werkmappen te verwijzen. Om dit te doen, moet u het Workbooks-object gebruiken:

1 Werkmappen ("VBA_Examples.xlsm"). Werkbladen ("Blad1"). Activeren

Belangrijk: De werkmap moet geopend zijn voordat u naar de Spreadsheets kunt verwijzen.

Activeren versus blad selecteren

In een ander artikel bespreken we alles over het activeren en selecteren van bladen. De korte versie is deze:

Wanneer u een blad activeert, wordt het de ActiveSheet. Dit is het blad dat u zou zien als u naar uw Excel-programma zou kijken. Er kan slechts één blad tegelijk worden geactiveerd.

Activeer een blad

1 Spreadsheets ("Blad1"). Activeren

Wanneer u een werkblad selecteert, wordt dit ook het ActiveSheet. U kunt echter meerdere bladen tegelijk selecteren. Wanneer meerdere bladen tegelijk zijn geselecteerd, is het "bovenste" blad de ActiveSheet. U kunt de ActiveSheet echter binnen geselecteerde bladen wisselen.

Selecteer een blad

1 Bladen ("Blad1"). Selecteer

Selecteer meerdere bladen

Gebruik een array om meerdere bladen tegelijk te selecteren:

1 Werkbladen (Array ("Blad2", "Blad3")).Selecteer

Variabele werkblad

Als u een werkblad aan een variabele toewijst, kunt u naar het werkblad verwijzen met de variabelenaam. Dit kan veel typen besparen en uw code gemakkelijker leesbaar maken. Er zijn ook veel andere redenen waarom u variabelen zou willen gebruiken.

Een werkbladvariabele declareren:

1 Dim ws als werkblad

Wijs een werkblad toe aan een variabele:

1 Stel ws = Bladen ("Blad1") in

Nu kunt u verwijzen naar de werkbladvariabele in uw code:

1 ws.Activeren

Doorloop alle bladen in werkmap

Werkbladvariabelen zijn essentieel wanneer u door alle werkbladen in een werkmap wilt bladeren. De eenvoudigste manier om dit te doen is:

12345 Dim ws als werkbladVoor elke ws in werkbladenMsgBox ws.naamVolgende ws

Deze code loopt door alle werkbladen in de werkmap en geeft elke werkbladnaam weer in een berichtvenster. Door alle bladen in een werkmap bladeren is erg handig bij het vergrendelen / ontgrendelen of verbergen / zichtbaar maken van meerdere werkbladen tegelijk.

Werkbladbescherming

Werkmapbeveiliging

Werkmapbeveiliging vergrendelt de werkmap tegen structurele wijzigingen, zoals het toevoegen, verwijderen, verplaatsen of verbergen van werkbladen.

U kunt werkmapbeveiliging inschakelen met VBA:

1 ActiveWorkbook.Bescherm wachtwoord:="Wachtwoord"

of werkmapbeveiliging uitschakelen:

1 ActiveWorkbook.UnProtect Password:="Wachtwoord"

Opmerking: u kunt de beveiliging ook zonder wachtwoord beveiligen of opheffen door het argument Wachtwoord weg te laten:

1 ActiveWorkbook.Protect

Werkbladbescherming

Beveiliging op werkbladniveau voorkomt wijzigingen in afzonderlijke werkbladen.

Werkblad beveiligen

1 Werkbladen ("Blad1"). Bescherm "Wachtwoord"

Werkblad beveiligen opheffen

1 Worksheets ("Blad1"). Beveiliging "Wachtwoord" opheffen

Er zijn verschillende opties bij het beschermen van werkbladen (sta opmaakwijzigingen toe, sta de gebruiker toe om rijen in te voegen, enz.) We raden aan om de Macro Recorder te gebruiken om de gewenste instellingen vast te leggen.

We bespreken werkbladbeveiliging hier in meer detail.

Werkblad Zichtbare eigenschap

U weet misschien al dat werkbladen verborgen kunnen worden:

Er zijn eigenlijk drie instellingen voor de zichtbaarheid van het werkblad: Zichtbaar, Verborgen en Zeer Verborgen.Verborgen bladen kunnen zichtbaar worden gemaakt door elke gewone Excel-gebruiker - door met de rechtermuisknop te klikken in het werkbladtabgebied (hierboven weergegeven). VeryHidden-bladen kunnen alleen zichtbaar worden gemaakt met VBA-code of vanuit de VBA-editor. Gebruik de volgende codevoorbeelden om werkbladen te verbergen / zichtbaar te maken:

Werkblad zichtbaar maken

1 Werkbladen ("Blad1"). Zichtbaar = xlBlad Zichtbaar

Werkblad verbergen

1 Werkbladen ("Blad1").visible = xlSheetHidden

Werkblad zeer verbergen

1 Werkbladen ("Blad1"). Zichtbaar = xlBladVeryHidden

Evenementen op werkbladniveau

Gebeurtenissen zijn triggers die ervoor kunnen zorgen dat "Gebeurtenisprocedures" worden uitgevoerd. U kunt bijvoorbeeld code laten uitvoeren telkens wanneer een cel op een werkblad wordt gewijzigd of wanneer een werkblad wordt geactiveerd.

Procedures voor werkbladgebeurtenissen moeten in een werkbladmodule worden geplaatst:

Er zijn tal van werkbladevenementen. Om een ​​volledige lijst te zien, gaat u naar een werkbladmodule, selecteert u "Werkblad" in de eerste vervolgkeuzelijst. Selecteer vervolgens een gebeurtenisprocedure in de tweede vervolgkeuzelijst om deze in de module in te voegen.

Werkblad Evenement activeren

Werkbladactiveringsgebeurtenissen worden uitgevoerd telkens wanneer het werkblad wordt geopend.

123 Privé subwerkblad_Activate()Bereik ("A1"). SelecteerEinde sub

Deze code selecteert cel A1 (het weergavegebied wordt opnieuw ingesteld naar de linkerbovenhoek van het werkblad) telkens wanneer het werkblad wordt geopend.

Werkblad Wijzigingsgebeurtenis

Werkbladwijzigingsgebeurtenissen worden uitgevoerd wanneer een celwaarde op het werkblad wordt gewijzigd. Lees onze tutorial over Worksheet Change Events voor meer informatie.

Werkblad Cheatsheet

Hieronder vindt u een spiekbriefje met veelvoorkomende codevoorbeelden voor het werken met bladen in VBA

VBA-werkbladen Cheatsheet

VBA-werkbladen Cheatsheet
BeschrijvingCodevoorbeeld
Bladen raadplegen en activeren
TabbladnaamSpreadsheets ("Invoer"). Activeren
VBA-codenaamBlad1.Activeren
IndexpositieBladen(1).Activeren
Selecteer blad
Selecteer bladBladen ("Invoer"). Selecteer
Instellen op VariabelDim ws als werkblad
Stel ws = ActiveSheet in
Naam / naam wijzigenActiveSheet.Name = "NieuweNaam"
Volgende bladActiveSheet.Volgende.Activeren
Doorloop alle bladenDim ws als werkblad
Voor elke ws in werkbladen
Msgbox ws.naam
Volgende ws
Doorloop geselecteerde bladenDim ws als werkblad
Voor elke ws in ActiveWindow.SelectedSheets
MsgBox ws.Naam
Volgende ws
ActiveSheet ophalenMsgBox ActiveSheet.Name
Blad toevoegenLakens.Toevoegen
Blad en naam toevoegenSpreadsheets.Add.Name = "NieuweBlad"
Blad toevoegen met naam uit celSpreadsheets.Toevoegen.Naam = bereik ("a3").waarde
Blad na elkaar toevoegenSpreadsheets.Toevoegen na:=Sheets("Input")
Blad toevoegen na en naamSheets.Add(After:=Sheets("Input")).Name = "NewSheet"
Blad toevoegen voor en naamSheets.Add(Before:=Sheets("Input")).Name = "NewSheet"
Blad toevoegen aan einde van werkmapSheets.Add After:=Sheets(Sheets.Count)
Blad toevoegen aan begin van werkmapSheets.Add(Before:=Sheets(1)).Name = "FirstSheet"
Blad toevoegen aan variabeleDim ws als werkblad
Stel ws = Bladen.Toevoegen
Werkbladen kopiëren
Blad verplaatsen naar einde van werkmapBladen ("Blad1"). Verplaatsen na: = Bladen (Vellen. Aantal)
Naar nieuwe werkmapBladen ("Blad1"). Kopiëren
Geselecteerde bladen naar nieuwe werkmapActiveWindow.SelectedSheets.Copy
Voor een ander bladSpreadsheets ("Blad1"). Kopieer eerder:=Sheets ("Blad2")
Voor het eerste bladBladen ("Blad1"). Kopieer voor:= Bladen(1)
Na laatste bladBladen ("Blad1"). Kopiëren na: = Bladen (Vellen. Aantal)
Kopieer en naamBladen ("Blad1"). Kopiëren na: = Bladen (Vellen. Aantal)
ActiveSheet.Name = "LastSheet"
Kopieer en benoem van celwaardeBladen ("Blad1"). Kopiëren na: = Bladen (Vellen. Aantal)
ActiveSheet.Name = Bereik ("A1"). Waarde
Naar een ander werkboekSpreadsheets ("Blad1"). Kopieer voor:=Werkboeken ("Voorbeeld.xlsm"). Bladen(1)
Bladen verbergen / zichtbaar maken
Blad verbergenSpreadsheets ("Blad1").zichtbaar = False
of
Spreadsheets ("Blad1").visible = xlSheetHidden
Blad zichtbaar makenSpreadsheets ("Blad1"). Zichtbaar = True
of
Bladen ("Blad1"). Zichtbaar = xl Blad Zichtbaar
Verberg bladBladen ("Blad1"). Zichtbaar = xlSheetVeryHidden
Bladen verwijderen of wissen
Blad verwijderenBladen ("Blad1").Verwijderen
Blad verwijderen (Foutafhandeling)Bij fout Hervatten volgende
Bladen ("Blad1").Verwijderen
Bij fout Ga naar 0
Blad verwijderen (geen prompt)Application.DisplayAlerts = False
Bladen ("Blad1").Verwijderen
Application.DisplayAlerts = True
Blad wissenBladen ("Blad1"). Cellen. Wissen
Alleen bladinhoud wissenBladen ("Blad1"). Cellen.ClearContents
Clear Sheet GebruiktBereikBladen ("Blad1").UsedRange.Clear
Bladen beveiligen of de beveiliging opheffen
Beveiliging opheffen (geen wachtwoord)Spreadsheets ("Blad1").Bescherming opheffen
Beveiliging opheffen (wachtwoord)Spreadsheets ("Blad1"). Beveiliging "Wachtwoord" opheffen
Bescherm (geen wachtwoord)Bladen ("Blad1").Beschermen
Bescherm (wachtwoord)Spreadsheets ("Blad1"). Bescherm "Wachtwoord"
Bescherm maar sta VBA-toegang toeSheets("Blad1").Bescherm UserInterfaceOnly:=True
Beveiliging van alle bladen opheffenDim ws als werkblad
Voor elke ws In werkbladen
ws.Unprotect "wachtwoord"
Volgende ws
wave wave wave wave wave