Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: Public of Global: Declareren in VBA  (gelezen 15631 keer)

0 leden en 1 gast bekijken dit topic.

Offline Montagnard

  • Ambassadeur
  • *****
  • Berichten: 2.385
  • Geslacht: Man
Public of Global: Declareren in VBA
« Gepost op: 21 januari 2024, 10:28:27 »

Als je Option Explicit gebruikt moet je volgende variabelen nog definieren
jaar vorig c00 c01
Dag , mag ik hier even op inpikken ?
voor zover ik gelezen heb kan je een variabele "declareren" om te kunnen gebruiken in het ganse werkboek , dus in alle modules...
dit zou moeten gedaan worden via "Public" en dan "Dim variabele As String" , maar waar doe ik dit (en hoe)? Bij het openen van het bestand in "Thisworkbook_open()" ?
Mvg,
Arnold.

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: Public of Global: Declareren in VBA
« Reactie #1 Gepost op: 21 januari 2024, 10:40:35 »
Hey Arnold,

Om een variabele te kunnen gebruiken in alle sub's binnen dezelfde module dien je 'Public' te gebruiken.
Om een variabele te kunnen gebruiken in alle modules dien je '
Global' te gebruiken.

Beide opties plaats je gewoon bovenaan in een module, de 'Public' in de module waarin de subs staan waarin je de variabele wenst te gebruiken, de 'Global' éénmalig in eender welke module (de Global mag zelfs in een lege module zijn)
De declaratie '.. As ...' kan je meteen bij de Public of Global doen en dien je dan niet meer afzonderlijk in je subs te doen.

dus ofwel 'Public variabele As ....'
ofwel 'Global variabele As....'

groetjes,
Bieke
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline Montagnard

  • Ambassadeur
  • *****
  • Berichten: 2.385
  • Geslacht: Man
Re: Public of Global: Declareren in VBA
« Reactie #2 Gepost op: 21 januari 2024, 10:48:33 »
Dankuwel Bieke ! ik ga daar mee aan de slag....nog een fijne zondag.
Grtjs,
Arnold.

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: Public of Global: Declareren in VBA
« Reactie #3 Gepost op: 21 januari 2024, 10:51:05 »
Graag gedaan!  ;)

voor jou ook nog een fijne zondag. :thumbsup:

groetjes,
Bieke
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.280
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Public of Global: Declareren in VBA
« Reactie #4 Gepost op: 21 januari 2024, 16:18:43 »
Hmm... ik vrees dat ik het niet eens ben met je antwoord Bieke. Public en Global zijn beide (ongeveer) gelijk. Global is de oude versie van Public en is overeind gebleven in VBA om er voor te zorgen dat oude programma's ook nog bleven werken waar deze declaratie in werd gebruikt. Public kan je iets veelzijdiger inzetten om een variabele waarde over meerdere modules (van welke soort dan ook) in een andere te krijgen. Wil je alleen je variabele in meerdere subs in 1 module gebruiken, dan declareer je deze als Private of gewoon Dim. Dit alles uiteraard als eerste regels boven aan de eerste sub van een module.
______________________________

Groet, Leo

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: Public of Global: Declareren in VBA
« Reactie #5 Gepost op: 21 januari 2024, 16:49:32 »
@redhead,

oops... dan is me het verschil indertijd verkeerd uitgelegd geweest....
mij werd (blijkbaar foutief) verteld dat de 'dim' enkel binnen een sub kan en dus enkel voor exclusief gebruik binnen die sub is, dat 'public' buiten de sub wordt geplaatst voor gebruik in alle subs binnen enkel die betreffende module en dat de 'global' bovenaan een module geplaatst word en overal gebruikt kan worden.

weer iets bijgeleerd dus.

groetjes,
Bieke
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline Montagnard

  • Ambassadeur
  • *****
  • Berichten: 2.385
  • Geslacht: Man
Re: Public of Global: Declareren in VBA
« Reactie #6 Gepost op: 21 januari 2024, 16:57:54 »
Update :
vreoger zette ik 4 waarden in verborgen cellen om daar mee te werken in gans mijn bestand
ik heb zoals Bieke heeft aangegeven een aparte module aangemaakt met daarin de 4 variabelen als "Global" gedeclareerd.
en het werkt perfect !
bij één zaak lukt het me niet :
ik heb volgende code staat in een cel : =VERSCHUIVING($C25;0;Z1) , in de cel Z1 staat de huidige maand , die cel vul ik bij het openen van het werkboek.
ik heb geprobeerd die Z1 te vervangen door Month(Date) ,  =VERSCHUIVING($C25;0;Mont(Date)) maar dat werkt niet.

iemand suggestie ?
Mvg,
Arnold.

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: Public of Global: Declareren in VBA
« Reactie #7 Gepost op: 21 januari 2024, 17:07:15 »
ik heb geprobeerd die Z1 te vervangen door Month(Date) : =VERSCHUIVING($C25;0;Mont(Date)) maar dat werkt niet.

Month(Date) : =VERSCHUIVING($C25;0;Month(Date))
probeer het zo eens? (zie aanpassing rode kleur)

groetjes,
Bieke
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline Montagnard

  • Ambassadeur
  • *****
  • Berichten: 2.385
  • Geslacht: Man
Re: Public of Global: Declareren in VBA
« Reactie #8 Gepost op: 21 januari 2024, 17:14:04 »
tis gelukt , toen ik op die cel ging staan stelde Excel zelf verschillende waardes voor , gewoon gevolgd : =VERSCHUIVING($C24;0;MAAND(VANDAAG()))
Thanks voor het meedenken.
Grtjs,
Arnold.

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: Public of Global: Declareren in VBA
« Reactie #9 Gepost op: 21 januari 2024, 17:16:09 »
tis gelukt , toen ik op die cel ging staan stelde Excel zelf verschillende waardes voor , gewoon gevolgd : =VERSCHUIVING($C24;0;MAAND(VANDAAG()))
Thanks voor het meedenken.
Grtjs,
Arnold.

blij dat het opgelost is  :thumbsup:

groetjes,
Bieke
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

 


www.combell.com