Klasse meegeven als parameter

Status
Niet open voor verdere reacties.

CvV

Gebruiker
Lid geworden
19 mei 2016
Berichten
24
Ik heb twee klassen. Ik wil klasse 2 aanroepen en daarbij als parameter meegeven klasse 1
Dan krijg ik echt fout fout 438, Deze eigenschap of methode wordt niet ondersteund door dit object.

Ik sluit een voorbeeld programma bij.
In klasse 1 wordt een variabele gezet. En in klasse 2 wil ik die variabele uitlezen.

Maar hoe doe ik dat?
 

Bijlagen

  • parameter klasse.xlsm
    14,9 KB · Weergaven: 33
Nog even onduidelijk wat je uiteindelijk wilt bereiken. De foutcode krijg je doordat je Klasse1 tussen haakjes hebt staan

Als je de variabele wilt inlezen, zou ik van Test een funktie maken ==>

Code:
Function Test(Klasse1 As Klasse1)

  Test = Klasse1.GetVariabele
  
End Function

en aanroep:
Code:
  x = Klasse2.Test(Klasse1)

Daarnaast zou ik niet dezelfde namen gebuiken voor de instanties van de klassen
Dus niet Dim Klasse1 As Klasse1
maar bijv.: Dim mijnklas1 As Klasse1

+ al eens gekeken naar Property Set/Let/Get ?
 
Dank je Eric voor de reactie.

Wat ik wil bereiken is dat ik in Klasse2 beschik over de mogelijkheid om functies in Klasse1 aan te roepen.
in werkelijkheid is Klasse1 een lid met daarin allerlei gegevens en functies.
Klasse2 is een een overzicht waarin gebruik wordt gemaakt van de gegevens van het betreffende lid dat als parameter wordt megegeven en de functies die daarbij horen.
In het hoofdprogramma wordt bepaald welk lid (hier Klasse1) moet worden opgenomen in het overzicht.
In het overzicht (hier Klasse2) worden dan de benodigde gegevens van het betreffende lid verwerkt in het overzicht.
Uit wat ik tot nu toe op internet gevonden heb concludeer ik dat het niet mogelijk is om een klasse als parameter mee te geven.
Ik heb inmiddels dan ook een andere oplossing gemaakt, maar het liefst zou ik het anders doen, nl. de klasse als parameter meegeven.

Overigens in werkelijkheid zijn de namen van de klasse en de instances van de klasse verschillend. Dus inderdaad Dim MijnKlasse1 as Klasse1.
Ik had dat ook beter in het voorbeeld kunnen doen. Dat was mogelijk wat duidelijker geweest.

Als je weet hoe je een klasse als parameter kunt meegeven zou ik het graag horen. Als je weet dat het inderdaad niet kan wil ik ook graag horen.
 
Bedoel je als in bijgaand voorbeeld?

Ik zou zeggen ja waarom niet als antwoord op jouw vraag een Klasse als parameter/property meegeven aan een andere klasse

Daarnaast lijkt jouw tekst erop dat je op zoek bent naar "implements", google daar eens op.

Maar wellicht praten we langs elkaar heen, plaats anders eens wat je hebt
 

Bijlagen

  • parameter klasse (2).xlsm
    14,7 KB · Weergaven: 20
Kennelijk komt inderdaad niet goed over wat ik bedoel. Maar ik weet ook niet goed hoe ik het wel duidelijk kan maken.
Wat ik nu heb kan ik niet meesturen. Het probleem is een deel van een veel groter programma. Daarom heb ik ook een voorbeeld gemaakt.
Als ik het goed begrijp is wat je in jouw oplossing doet is in Module1 Klassen1 aanmaken als een instance van Klasse1. En vervolgens testing als een andere instance van Klasse1 aanmaken in Klassen2, waarbij testing een variabele is van Klassen2. Dan kun je in Klassen2 inderdaad beschikken over de gevens van testing. Maar die gegevens staan los van de gegevens van Klassen1 die in Module1 is aangemaakt.
Ik zou juist willen dat Klassen2 gebruik kan maken van de Klassen1 die in Module1 is aangemaakt.

Ik hoop dat het zo duidelijk is.

Groeten Kees
 
In bijgaand bestand de Klasse1 'static' gemaakt ( Attribute VB_PredeclaredId = True)

Nu kun je Klasse1 zo aanroepen, zonder 'New' te gebruiken.

Wellicht kun je jouw voorbeeldje dusdanig aanpassen/uitbreiden om eea te verduidelijken.
 

Bijlagen

  • parameter klasse (2) (1).xlsm
    15,4 KB · Weergaven: 22
Dank je Eric,
dit is precies wat ik bedoel.
Maar waar zet ik het Attribute VB_PredeclaredId = True?
Ik kan het jouw voorbeeld niet vinden.
 
Remove en Exporteer de Klasse,
Open de Klasse in Notepad,
Bovenaan staan een aantal Attributes
Deze kun je enkel buiten Excel/VBa aanpassen
Dan weer importeren
 
Dank je wel Eric.
Dit heeft inderdaad m'n probleem opgelost.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan