TempVar declareren

Status
Niet open voor verdere reacties.

KPTPTT

Gebruiker
Lid geworden
2 mrt 2018
Berichten
321
Ik gebruik de instructie TempVar. Op zich werkt deze functie goed. Nu declareer ik eenmaal de Variabele met VAR (Dim XXX As Var). Als ik de variabele waarde in verschillende modulen en procedures destilleer (YYY= TempVars![sVariabele], dan werkt dat op zich, maar vraag mij af: "Moet ik de Var declareren als Private Statement of als Public Statement". Public zou mogelijk beter zijn omdat dezelfde variabele/VAR in de verschillende modulen en procedures wordt gebruikt. Ik zou dan bovenaan de module kunnen declareren: Public XXX As Var. Is dit de juiste methode en noodzakelijk?
 
"Moet ik de Var declareren als Private Statement of als Public Statement".
Simpel antwoord: niet :). TempVars declareer je niet. Je voegt ze toe met TempVars.Add “naam” “waarde” en dan zijn ze klaar.
 
Dank. Ik heb aangegeven dat ik TempVars al gebruik, dus gebruik ik de juiste instructies. Er moet nmi. voor het gebruik van "TempVars" worden gedeclareerd. Natuurlijk heb ik TempVars.Add etc. gebruikt maar de vraag gaat over de declaratie daar van. Volgens je antwoord hoef ik niet te declareren en geen "Public XXX As Var" of "Dim XXX As Var " toe te passen. Declaratie weglaten? Indien wel, wat is dan het beste in mijn geval, "Dim" of "Public".
 
Dit is al genoeg om er mee te werken:
Code:
Sub testje()
    
    Application.TempVars.Add "varUser", Environ("UserName")
    MsgBox TempVars("varUser")

End Sub
 
Ik hoef dus niet te declareren. Dit is in tegenstelling met een eerdere vraag van mij op 21-2-2020 23:42 item #2 waarbij je een uitgebreide uitleg geef over TempVar en de declaratie daarvan.
TempVars zijn, mits correct gebruikt, heel krachtig. Maar dat goede gebruik, dat kan dus lastig zijn . Wat is dan de juiste werkwijze?
1. Declareer de TempVars die je nodig hebt één keer. Zelf doe ik dat op het startformulier waarmee ik een db opstart. Kan ik ze ook niet vergeten.
2. Declareer ze dus nooit daarna nóg een keer, want dan heb je niks meer.
3. Gebruik, als je een TempVar declareert, de enkelvoudige variant. Het heeft doorgaans weinig zin om aparte collecties aan te maken.
4. Gooi TempVars niet weg.
5. TempVars houden hun waarde, totdat je er iets nieuws in zet, of ze leeg maakt.
6. Een TempVar kun je vullen door hem aan te maken, of door er een nieuwe waarde aan toe te kennen.
7. Als een TempVar al bestaat, kun je hem gewoon ‘opnieuw aanmaken’ als je een andere waarde wilt toewijzen. Je overschrijft dan de eerdere waarde.
Je tweede antwoord begrijp ik niet.
 
Het 'declareren' is niet meer dan dit: Application.TempVars.Add "varUser", ""). En dát is dus wat ik doe bij het vastleggen op een startformulier. Ik leg ze vast met de juiste namen, en hou de inhoud leeg. Daarna kun je ze naar believen vullen met wat je maar wilt.
 
Anders dan dat je hebt uitgelegd in item #7, daar gaf je Dim op. Ik heb begrepen dat je TempVar niet hoeft de declareren en direct de instructie kan toepassen, TemVars zijn Global en dus eenmaal hoeft te declareren. Ik denk dat TempVar Add beter is dan Dim omdat je de variabele direct daarmee aan het eerste reset (leeg maakt). Waarom staat er Application voor.? Moet ik dat bij iedere toewijzing van de waarde aan de variabele van de TempVar doen? Ik ga het testen, dank.
 
Laatst bewerkt:
TempVars vallen in de Application collectie, vandaar de extra verwijzing. Het werkt ook zonder.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan