Avatar billede koppelgaard Praktikant
17. februar 2014 - 17:21 Der er 4 kommentarer og
1 løsning

VBA, tilføje en type til en collection

Hvorfor kan følgende kode ikke køre ?

Type person
  ID As Integer
  Name As String
End Type


Sub test()
Dim col As New Collection
Dim p As New person


For t = 1 To 5
  p.ID = t
  p.Name = CStr(t) & "Name"

  col.Add p
Next

End Sub


koden er taget fra:
http://www.blitzbasic.com/Community/posts.php?topic=65827
Avatar billede koppelgaard Praktikant
17. februar 2014 - 17:24 #1
Der kommer følgende fejl:

'Invalid use of new keyword'

Koden lægger i et modul. Kan det være årsagen
Avatar billede bvirk Guru
18. februar 2014 - 00:25 #2
Det er invalid at bruge new på noget man ikke kan bruge new på - her selvdefinerede typer
Og selvdefinerede typer kan ikke tilføjes en collection. Dette eneste rigtige i det du linker til er indholdet i dynamans link til microsoft.com
Opjekter kan tilføjes en collection.

Lav et klassemodul med blot følgende to linier - navngiv Person
Public id As Long
Public name As String

Konkluder på forskellen mellem
'1.
Sub testCollection()
Dim col As New Collection
Dim p As New Person
Dim t

For t = 1 To 5
  p.id = t
  p.name = CStr(t) & "Name"

  col.Add p
Next

For t = 1 To col.count
    Debug.Print t, col.Item(t).id, col.Item(t).name
Next

End Sub


'2.
Sub testCollection()
Dim col As New Collection
Dim p As Person
Dim t

For t = 1 To 5
  Set p = New Person
  p.id = t
  p.name = CStr(t) & "Name"

  col.Add p
Next

For t = 1 To col.count
    Debug.Print t, col.Item(t).id, col.Item(t).name
Next

End Sub
Avatar billede koppelgaard Praktikant
18. februar 2014 - 09:21 #3
Tak!
Version 2 virker fint.
Min konklusion:
Version 1 er blot en collection med eet object, der er tilføjet til collectionen 5 gange. Objectet har samme værdi på alle pladser i collectionen.

Sender du et svar?
Avatar billede bvirk Guru
18. februar 2014 - 20:26 #4
Her er så et svarmærket indlæg. Til visse sammenhænge er dictionary mere oplagt -  se
http://excelicious.wordpress.com/2010/01/07/dictionary-vs-collection/
(kræver referencer sat til Microsoft Scriting Runtime)
Avatar billede koppelgaard Praktikant
18. februar 2014 - 20:39 #5
Tak for dit råd om dictionary.
Det ser meget brugbart ud.
Har også en clear metode. Den manglede jeg i dag.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester