Collections en classes

Status
Niet open voor verdere reacties.

harolda1980

Gebruiker
Lid geworden
7 aug 2007
Berichten
488
Ik ben bezig met een rekenmodule te maken als class in VBA. Nu kom ik een aantal dingen tegen waar ik niet mee weet om te gaan.
Via collections kan ik meerdere objecten samenvoegen tot een groot object met meerdere onderliggende varianten van het object.

Maar wat als ik van 1 object meerdere varianten nodig heb, volgens mij kan dit ook via een collection of een andere oplossing.

Per artikel moet een berekening uitgevoerd worden.
En de volgende gegevens moeten worden opgeslagen:
  • Artikelnr
  • Artikel omschrijving
  • Merk
  • inhoud
  • Prijs
  • %
Kan iemand mij vertellen hoe ik dit onderdeel van het object kan verveelvuldigen!
 
Plaats liever je code hier voordat we langs elkaar heenpraten.
 
Hier even een klein voorbeeldje van een groter geheel!

Code:
'Dit stuk zou ik dan oneindig willen clonen?
Public Art_prijs1 As Currency
Public Art_Artnr As Long
Public Art_naam As String

Public Function Artikelberekening(Prijs As Currency, L1 As Long) As Currency
    Art_prijs1 = Prijs - (Prijs * L1)
End Function
 
dat klonen gaat dan toch bijv.

public verzameling as new collection

Code:
for each cl in columns(1).specialcells(2)
   verzameling.add new fabrikant_artikel,cl.value
next

c01=verzameling(columns(1).specialcells(2).cells(1).value).artikelberekening(420.00,21)
 
Ik heb geen idee waar je heen wil.
 
Oke.. een beetje extra uitleg kan geen kwaad!

Ik moet een rekenmodel bouwen waarbij een fabrikant merken en artikelen heeft.
En eigenlijk wil ik het deel met artikelen dupliceren omdat een Fabrikant meerdere artikelen heeft.

Die ik later kan gebruiken en kan oproepen?


Code:
Public Fabrikant_naam as string
Public Fabrikant_nr as long

Public Art_prijs1 As Currency
Public Art_Artnr As Long
Public Art_naam As String

Public Function Artikelberekening(Prijs As Currency, L1 As Long) As Currency
    Art_prijs1 = Prijs - (Prijs * L1)
End Function

Zo heb je in adodb de connection en recordset. En deze kun je oneindigd aanmaken uit de class adodb. Dat was als voorbeeld bedoeld.
Want een recordset zou dus vergelijkbaar kunnen zijn met een artikel.
 
Dan is je vraag toch al beantwoord in #6 ?
 
Ik krijg de foutmelding type komen niet overeen!
En ik heb een aantal punten gedimt, heb ik dan goed gedaan?

Code:
Dim verzameling As New Collection

Sub test12()
Dim cl, c01

For Each cl In Sheets("blad3").Columns(1).SpecialCells(2)
   verzameling.Add New Berekeningen, cl.Value
Next

c01 = verzameling(Sheets("blad3").Columns(1).SpecialCells(2).Cells(1).Value).Artikelberekening(420#, 21)
End Sub
 
de klasse heette toch anders ?

Kijk nog eens goed naar de code bij #6
 
Ja klopt maar dat is dezelfde code en krijg nog steeds dezelfde foutmelding.
Zat te kijken of er verschil in zat met de werking.
 
Lees eerst eens een uitgebreide tutorial of artikel over classes, dan wordt het wat minder trial & error.....
 
Dit is het laatste onderdeel voor ik een werkende class heb en de rest komt al uit het WROX Excel 2007 VBA boek..
Dus ik zou erg geholpen zijn met de oplossing van dit onderdeel
 
Dan moet je je huidige resultaat hier plaatsen.
 
Ik ben weer een stuk verder hij werkt! Aangezien de inputwaarden verkeerd was.

Nu zie ik ook wat hij doet en dat is in principe wel goed.

Alleen word nu het hele object gecloned! En ik zou 1 onderdeel willen clonen zeg maar.
Ik zou alleen maar die artikel variabelen willen clonen.

gegevens.jpg

Ik zat nog te kijken of ik het volgende kan doen

dim FA as Fabrikant_artikel.(onderdeel van het object)

Andere optie is dat ik er twee objecten van maak en via een uniek id met elkaar verbind!
En dan eentje voor de fabrikant en een aparte voor de artikelen die ik dus ga klonen op deze manier.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan