Macro’s en VBA¶
Commentaar toevoegen¶
'
(accent grave) voor de regel te plaatsen.Voorbeeld:
Sub Vervang()
'Vervang de punt door een spatie
ActiveSheet.Columns("A").Replace _
What:=".", Replacement:=" ", _
SearchOrder:=xlByColumns, MatchCase:=True
End Sub
Ga naar de eerste pagina (Word)¶
Dit is een macro om snel en naar de eerste pagina van je document te gaan:
Sub Pagina1()
'Ga naar de eerste pagina van je document
Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:="1"
End Sub
Kraak het wachtwoord van een Excel werkblad¶
Je kunt dan onderstaande VBA code gebruiken:
Sub WachtwoordCrack()
Dim a, b, c, d, e, f, g, h, i, j, k, m As Integer
begin = TimeValue(Time)
On Error Resume Next
For a = 65 To 66: For b = 65 To 66: For c = 65 To 66
For d = 65 To 66: For e = 65 To 66: For f = 65 To 66
For g = 65 To 66: For h = 65 To 66: For i = 65 To 66
For j = 65 To 66: For k = 65 To 66: For m = 32 To 126
ActiveSheet.Unprotect Chr(a) & Chr(b) & Chr(c) & _
Chr(d) & Chr(e) & Chr(f) & Chr(g) & Chr(h) & _
Chr(i) & Chr(j) & Chr(k) & Chr(m)
If ActiveSheet.ProtectContents = False Then
einde = TimeValue(Time)
duur = Format(einde - begin, "hh:mm:ss")
MsgBox "Werkblad is wachtwoord-vrij." & Chr(10) & "in: " &
Chr(10) & Chr(10)
Exit Sub
End If
Next: Next: Next
Next: Next: Next
Next: Next: Next
Next: Next: Next
End Sub
Lettertype aanpassen (Word)¶
De dingen die je niet nodig hebt, hoef niet te vermelden in de macro:
Sub Lettertype()
' Lettertype Aanpassen
Selection.WholeStory
Selection.Font.Name = "Arial"
Selection.Font.Size = 12
Selection.Font.Underline = True
Selection.Font.Bold = False
Selection.Font.Italic = False
Selection.Font.StrikeThrough = False
Selection.Font.Subscript = False
Selection.Font.Superscript = False
Selection.Font.ColorIndex = wdBlue
Selection.Fields.Unlink 'Verwijder alle hyperlinks
End Sub
Maak een lijst van je werkbladen¶
Dit is een macro om snel een lijst te maken van alle werkbladen in het actieve werkboek van Excel:
Sub ListSheetNames()
'Maak van alle werkbladen een lijst in het actieve werkboek vanaf de geselecteerde cel
Dim R As Range
Dim WS As Worksheet
Set R = ActiveCell
For Each WS In ThisWorkbook.Worksheets
R.Value = WS.Name
Set R = R(2, 1)
Next WS
End Sub
Maak jaar en maandbladen (Excel)¶
52 lege weekbladen:
`Maak 52 lege werkbladen voor elke week 1.
Sub Maaknieuweweekmap()
For wknr = 1 To 52
With ActiveWorkbook.Sheets.Add(After:=Worksheets(Worksheets.Count))
.Name = "Week " & wknr
End With
Next
End Sub
52 werkbladen die allemaal een kopie van blad 1 zijn:
`Maak 52 werkbladen die allemaal een kopie van blad 1 zijn
Sub Gebruikvoorbeeld()
Dim werkbl As Worksheet
Set werkbl = ActiveSheet
For wknr = 1 To 52
werkbl.Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = "Week " & wknr
Next
werkbl.Activate
End Sub
Maak 31 werkbladen voor de dagen van de maand:
`Maak 31 werkbladen voor de dagen van de maand
Sub Dagen()
Dim werkbl As Worksheet
Set werkbl = ActiveSheet
For dagnr = 1 To 31
werkbl.Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = "Dag " & dagnr
Next
werkbl.Activate
End Sub
Maak werkbladen van een lijst¶
Maak van een lijst werkbladen in het actieve werkboek:
Sub CreateSheetsFromAList()
'Als je veel werkbladen in een werkboek moet maken is dit een snelle methode om dat te doen.
'Maak in Blad1 een lijst met namen en gebruik deze macro om deze naar werkbladen om te zetten.
Dim MyCell As Range, MyRange As Range
Set MyRange = Sheets("Blad1").Range("A1") 'Naam blad, en eerste cel
Set MyRange = Range(MyRange, MyRange.End(xlDown))
For Each MyCell In MyRange
Sheets.Add After:=Sheets(Sheets.Count) 'Maakt een nieuw werkblad
Sheets(Sheets.Count).Name = MyCell.Value ' Hernoemt het werkblad.
Next MyCell
End Sub
Toevoegen van een automatisch doortellend nummer (Excel)¶
VBA code:
Sub NieuwNummer()
`Vervang "A1" door het celnummer waar het nummer moet komen.
Range("A1").Value = Range("A1").Value + 1
End Sub

Verklein alle images naar hetzelfde formaat (Word)¶
Vervang in Height en Width de maten die je hebben wilt:
Sub Verklein_Images
' Verklein alle images naar de gewenste maat
Dim i As Long
With ActiveDocument
For i = 1 To .InlineShapes.Count
With .InlineShapes(i)
.Height = 141.75 ' Hoogte resultaat
.Width = 188.2 ' Breedte resultaat
End With
Next i
End With
End Sub
Vervang tekst in een document¶
Ik vervang hier het woord piet door Piet de Groot:
Sub VervangTekst()
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "piet" 'Zoek naar deze tekst
.Replacement.Text = "Piet de Groot" 'Vervang door deze tekst
.Forward = True
.Wrap = wdFindContinue
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
Verwijder hyperlinks (Word)¶
Met deze macro verwijder je alle hyperlinks uit een Word document:
Sub RemoveHyperlinks()
' Verwijder alle hyperlinks in een document
With ActiveDocument
Do Until .Hyperlinks.Count = 0
.Hyperlinks(1).Delete
Loop
End With
End Sub
.. index:: VBA Excel; Voeg tekst toe
Voeg tekst toe aan het begin van een cel (Excel)¶
Voeg tekst toe vooraan een cel:
Sub VoorToevoegen()
'voeg tekst toe vooraan een cel
For Each cl In ActiveSheet.Cells.SpecialCells(xlCellTypeConstants)
cl.Value = "....." & cl.Value
'vervang punten door spaties of een woord/letters
Next
End Sub
Voeg tekst toe achteraan een cel:
Sub AchterToevoegen()
'voeg tekst toe achteraan een cel
For Each cl In ActiveSheet.Cells.SpecialCells(xlCellTypeConstants)
cl.Value = cl.Value & "....."
'vervang punten door spaties of een woord/letters
Next
End Sub
Zoek de actieve printer¶
Hiermee kun je makkelijk zien wat je actieve printer is:
Sub TestActivePrinter()
MsgBox "De naam van de actieve printer is: " & _
Application.ActivePrinter
End Sub