Witaj,
To nie jest odpowiedz na Twoje pytanie...
Sortowanie elementow roznych klas wymaga okreslenia typu klasy. Jest to konieczne do tego, by odczytac odpowiednie wlasciwosci, specyficzne dla obiektu danej klasy.
Mozna do tego uzyc funkcji TypeName. Powoduje to niepotrzebne skomplikowanie kodu. Uwazam, ze nie tedy droga.
Zamiast uzywac roznych klas dla opisu elementow ktore zamierzasz przetwarzac razem uzyj jednej klasy. Elementy jednego typu latwiej posortowac.
Zeby rozroznic rodzaj elementow uzyj dodatkowej wlasciwosci okreslajacej typ elementu.
Czyli wlasciwosci twojej klasy wygladalyby tak:
Option Explicit
Public Nazwa As String
Public Masa As Double
Public Grubosc As Double
Public Szerokosc As Double
Public SzerokoscD As Double
Public Dlugosc As Double
Public LiczbaSztuk As Integer
Public NumerPozycji As Integer
Public TypElementu As TypElementu
Const WspolczynnikMasy = 7850
Module glownym zdefiniuj jeszcze typ wyliczeniowy:
Public Enum TypElementu
cProfil = 1
cBlacha = 2
End Enum
(edit)
Twoj kod mozna tez uproscic:
Option Explicit
Dim kolekcjaBlachyIprofile As Collection
Dim blacha As BlachyAll
Dim profilSlup As ProfileAll
Sub slup10()
Set kolekcjaBlachyIprofile = New Collection
Set blacha = New BlachyAll
blacha.NumerPozycji = 4
blacha.Grubosc = 5
blacha.Szerokosc = 120
blacha.Dlugosc = 850
blacha.LiczbaSztuk = 1
kolekcjaBlachyIprofile.Add blacha
Set blacha = New BlachyAll
blacha.NumerPozycji = 3
blacha.Grubosc = 9
blacha.Szerokosc = 48
blacha.Dlugosc = 320
blacha.LiczbaSztuk = 1
kolekcjaBlachyIprofile.Add blacha
Set blacha = New BlachyAll
blacha.NumerPozycji = 2
blacha.Grubosc = 12
blacha.Szerokosc = 56
blacha.Dlugosc = 320
blacha.LiczbaSztuk = 2
kolekcjaBlachyIprofile.Add blacha
Set blacha = New BlachyAll
blacha.NumerPozycji = 5
blacha.Grubosc = 16
blacha.Szerokosc = 80
blacha.Dlugosc = 220
blacha.LiczbaSztuk = 5
kolekcjaBlachyIprofile.Add blacha
Set blacha = New BlachyAll
blacha.NumerPozycji = 7
blacha.Grubosc = 20
blacha.Szerokosc = 240
blacha.Dlugosc = 500
blacha.LiczbaSztuk = 1
kolekcjaBlachyIprofile.Add blacha
Set blacha = New BlachyAll
blacha.NumerPozycji = 6
blacha.Grubosc = 25
blacha.Szerokosc = 120
blacha.Dlugosc = 260
blacha.LiczbaSztuk = 2
blacha.SzerokoscD = 80
kolekcjaBlachyIprofile.Add blacha
Set blacha = New BlachyAll
blacha.NumerPozycji = 8
blacha.Grubosc = 10
blacha.Szerokosc = 80
blacha.Dlugosc = 80
blacha.LiczbaSztuk = 2
kolekcjaBlachyIprofile.Add blacha
Set profilSlup = New ProfileAll
profilSlup.NumerPozycji = 1
profilSlup.Nazwa = "HEB260"
profilSlup.LiczbaSztuk = 2
profilSlup.Masa = 35.6
profilSlup.Dlugosc = 4532
kolekcjaBlachyIprofile.Add profilSlup
End Sub
pozdrawiam
Admin |