declareren variabelen en gebruiken

Status
Niet open voor verdere reacties.

LeonieK12

Gebruiker
Lid geworden
9 jan 2013
Berichten
36
Besten,

waarschijnlijk een hele basale vba-vraag, maar voor mij een grote puzzel... Ik heb enkele variabelen gedeclareerd en wil dit nu gebruiken om bestanden op te slaan en te openen. Bij het testen wordt een fout gegeven bij "thisworkbook.saveas". Ik zal ergens een foutje hebben gemaakt in de declaratie of het gebruik ervan, maar ik kan hem niet vinden.

Code:
 Dim strPersKK As String
    Dim strPad As String
    Dim strAfdOverzicht As String
    Dim strJaar As String
    
     
    strPad = "G:\04_Monodisciplinary\01_Knowledge_Development\Knowledge Management\kennis in kaart\2.under construction\K.I.K. templates under construction\proefversies\CNS\"
    strPersKK = Sheets("technische kennis CNS").Range("C2").Value
    strAfdOverzicht = "AFDELINGSOVERZICHT_CNS.xlsm"
    strJaar = Me.txtJaar.Value
    
    ThisWorkbook.SaveAs strPad & strPersKK, FileFormat:=52
    
	Workbooks.Open strPad & strAfdOverzicht
 
Zo zie je fout vanzelf:

Code:
   strPad = "G:\04_Monodisciplinary\01_Knowledge_Development\Knowledge Management\kennis in kaart\2.under construction\K.I.K. templates under construction\proefversies\CNS\"
    strPersKK = Sheets("technische kennis CNS").Range("C2").Value
    strAfdOverzicht = "AFDELINGSOVERZICHT_CNS.xlsm"
    strJaar = Me.txtJaar.Value
    
msgbox strPad & strPersKK
    ThisWorkbook.SaveAs strPad & strPersKK, 52

Het heeft niets met declareren te maken. Haal die declaraties maar eens weg......
 
Beste SNB,

hartelijk dank voor je pedagogisch verantwoorde reactie ;-). Ik heb inderdaad de fout gevonden, en was enigzins teleurgesteld dat ik zelf moest gaan zoeken. Maar dat is wel een goede manier, en ik heb de truc met de messagebox nu al vaker toegepast.
 
Ik denk niet dat wij de fout op basis van jouw informatie hadden kunnen vinden.... :)
 
Ik zou de declaraties niet weghalen en zelfs een stapje verder gaan door "Option explicit" te gebruiken bovenaan elke module, sheet.
Op die manier zal je zien wanneer je zaken probeert te gebruiken die niet gedeclareerd zijn.

Naast de msgbox heb je ook de "Immediate window" ctrl+G om dergelijke zaken uit te pluizen, te debuggen :)

In je code kan je
Code:
debug.print strPad & strPersKK
gebruiken.

In de "Immediate window" zelf kan je "?strPad" en enter gebruiken om eender welke variabel op te vragen.
Wanneer je "strPad= "C:\MijnFolder" en enter intypt wordt de variabel zelfs aangepast tijdens uitvoering van de code.
De Immediate window kan je pas gebruiken wanneer de macro runt, dus de macro stap voor stap uitvoeren / starten via F8 of ergens in je code een break point zetten.
 
Laatst bewerkt:
Mijn advies: verwijder option explicit.
Declareer varaibelen alleen als het nodig is (als je private of public variabelen nodig hebt of gebruik maakt van een Klassemodule).
Zonder Option Explicit gaat er niets mis.
 
Beste snb en mcs51mc,

Hartelijk dank voor jullie adviezen. En interessant om te zien dat er verschillende meningen zijn tov Option Explicit. Ik voelde me bijna beschaamd dat ik dat niet gebruikte, maar er zijn meer mensen die het niet gebruiken ;-).
 
Zonder een polemiek te willen starten toch nog even het volgende rond het declareren van variabelen.
Wanneer je de naam van al je variabelen en controls met 3 specifieke letters laat beginnen (str, lng, dbl, var, cmb, lbl, cmd, ... ... ...) dan heb je een grote hulp aan de toetsen "Ctrl + Spatie" tijdens het typen van je code.

Type gewoon de eerste 3 letters en vervolgens "Ctrl + Spatie", dan krijg je een lijst van alles die met deze 3 letters begint :shocked:
Je moet dan gewoon door de lijst scrollen om een variabel te vinden, véél minder typwerk en geen kans op typfouten :thumb:

Dat alleen al is een reden om variabelen te declareren!

Wanneer je dan nog "Option Explicit" gebruikt heb je een bijkomende veiligheid naar foutieve declaraties.

Bottom line: Declareren en Option Explicit :)
Ik doe dat al +20 jaren en ga nu niet meer veranderen :mad:


PS: Er bestaat zelfs een "good practice" lijst rond de eerste 3 letters van variabelen/controls.
 
Laat mij nou altijd gedacht hebben dat dat declareren op de topline gebeurde ?? :D

Het stamt wat mij betreft uit een tijd met heel andere (beperktere) hardware.
 
Was ik dit voorbeeld even vergeten in mijn vorige post:
Bij correct gedeclareerde variabelen zal Excel alle properties en events van die variabele opsommen tijdens het schrijven van de code.
Een assitent(e) die een oogje in het zeil houdt, waarom zou je die niet gebruiken.

Dit mag je thuis WEL even proberen
Code:
Sub Test() 
Set mySheet = ActiveSheet 
mySheet.
Na het laatste punt moet je zelf maar uitzoeken wat je nodig hebt aan property en/of event :confused:


Echter met deze declaratie erbij is het vééééél leuker programmeren:
Code:
Sub Test2() 
Dim mySheet As WorkSheet 
Set mySheet = ActiveSheet 
mySheet.
Na het laatste punt krijg je reeds een hele reeks mogelijkheden... je hebt maar te kiezen :love:


Misschien kom je zelfs zaken tegen waarvan je het bestaan niet kende :eek:


Bottom line : Zoals snb reeds aanhaalde TOPLINE = declaraties met "on top of that" Option explicit :thumb:


PS: Hardware, al dan niet beperkt, heeft hier niets mee te maken!
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan