Excel vba: moet je altijd ThisWorkbook te definiëren?

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • MC trouble
  • Registratie: December 2010
  • Laatst online: 27-11-2024
Dag allemaal,

Toen ik net wat (oude) code wou aanpassen viel mij een fout op.
Hoewel ik thisWordbook definieer doe ik er verder helemaal niks mee.
Tegenwoordig gebruik ik eigenlijk standaard "With thisWorkbook" of iets dergelijks.
Het gros van mijn macro's/code blijft toch binnen de zelfde Excel...

Dit heeft de laatste jaren nooit tot fouten geleid... denk/hoop ik.
Mag ik hier uit opmaken dat als de code binnen een workbook blijft je niet
expliciet een workbook hoeft te definiëren? Dat dacht ik wel namelijk.


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Sub Groslijst()                     
  Dim i As Integer, j As Integer, y As Integer, TpN As Integer: y = 1
  Dim max As Long                                
  Dim wsTPL As Worksheet, wsGroslijst As Worksheet, wsGroslijst_VB As Worksheet            
  Dim wb As Workbook                                         
  Dim cellAL As Range
  
  Set wsTPL = Sheets("tappuntenlijst")
  Set wsGroslijst = Sheets("Groslijst")
  Set wsGroslijst_VB = Sheets("Groslijst_VB")
  Set wb = ThisWorkbook  <--------------------------------------------------------------  ??????????

  j = 4  'Eerste rij
  max = WorksheetFunction.max(wsTPL.Range("A5:A1500"))    'aantal rijen op invulblad       

    For i = 5 To max + 5

       Set cellAL = wsTPL.Cells(i, "AC") 
          If cellAL.Value = "X" Then
              TpN = wsTPL.Cells(i, "A").Value + 8
              wsGroslijst.Cells(j, "B").Value = wsGroslijst_VB.Cells(TpN, "P").Value
          j = j + 1
          y = y + 1
       End If
    Next i
End Sub


Ps: dit is zo ongeveer de eerste macro die ik gemaakt heb.
Het kan allemaal een stuk netter, maar het werkt naar behoren.
...en de zelfde basis is voor vele tientallen werkbladen gebruikt.

Acties:
  • 0 Henk 'm!

  • Arjan90
  • Registratie: September 2005
  • Laatst online: 18:26
Ik definieer vooral ook om overzicht te behouden met welk workbook of worksheet ik bezig ben. En wb is veel korter dan ThisWorkbook, waardoor ik de code overzichtelijker houd voor mezelf :)

"Everybody is a genius. But if you judge a fish by its ability to climb a tree, it will live its whole life believing that it is stupid."


Acties:
  • 0 Henk 'm!

  • m-vw
  • Registratie: Mei 2013
  • Laatst online: 20:48

m-vw

Dus?

Is vooral om te voorkomen dat de code wordt uitgevoerd over het verkeerde bestand. Als je wb niet definieert dan wordt de code uitgevoerd over het actieve blad.

En afhankelijk van hoe de code wordt gestart hoeft dit niet het gewenste blad te zijn.