Toon posts:

[VBA] Public Constant een waarde geven

Pagina: 1
Acties:
  • 304 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Programma waarmee ik werk is de VB Editor van Excel omdat ik daar mijn gegevens inlees en mijn resultaten uitschrijf.

De bedoeling is een groot programma te hebben van waaruit kleinere programmas uitgeroepen worden(functies dus).
Die functies zijn an sich gewoon berekeningen. Nu heb ik voor die berekeningen een aantal vaste waardes nodig, het probleem is echter dat sommige van die waardes in meerdere programmas worden gebruikt.
Ik wil dus in het begin een aantal waardes declareren en meteen ook een waarde geven (uitgelezen uit een cell in excell) zodat deze waardes gebruikt kunnen worden in alle functies.

Daarom dacht ik aan
Public X as Double
X = Sheets("Worksheet1").Cells(1,1)
Dan krijg ik echter "Compile error: Invalid outside procedure"

Dan ben ik op het volgende gekomen:
Const X = Sheets("Worksheet1").Cells(1, 1)
Maar dan krijg ik weer een error: "Compile error: Constant expression required"
Als ik gewoon een waarde geef aan de constante is er geen probleem
Dus Const X = 1 werkt wel, maar de bedoeling van het programma is simpel een waarde te kunnen vervangen in excel, vervolgens macro runnen en dan even simpel het resultaat af te lezen.

Nog een andere "oplossing" die ik gevonden had was om alle waardes in het hoofdprogramma te declareren en een waarde te geven en deze dan te gebruiken als attributen bij de functies. Maar als je 50 keer dezelfde functie (met bijvoorbeeld 5 attributen) moet aanroepen, zit je 50 keer met 5 dezelfde attributen. Hetgeen nogal omslachtig is dus.

Heeft iemand een idee hoe ik dit op kan lossen?

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Verwijderd schreef op dinsdag 07 november 2006 @ 19:41:

Public X as Double
X = Sheets("Worksheet1").Cells(1,1)
Je vergeet het woordje function ;)
code:
1
2
3
Public function X() as double
   x=1
End function

Andere mogelijkheid is x als variabele te declareren en die bv bij het openen van het workbook te initialiseren.

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Verwijderd

Topicstarter
Ow zo eenvoudig :$ Duizend maal bedankt!!!

Wat is eigelijk het verschil dan tussen een Sub en een Function?

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

even googelen :)

offtopic:
vba topics mogen in officesuites en -software

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 17:36

NMe

Quia Ego Sic Dico.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.