Avatar billede lklingenberg Nybegynder
28. august 2006 - 11:52 Der er 5 kommentarer og
1 løsning

Bruge array i flere moduler

Hi E,

Jeg har en kodestump, der generer et to-dimensionelt array.

Det array vil jeg gerne generere, naar jeg aabner arket, og derefter bruge samme array i forskellige moduler.

At faa arrayet genereret kan goeres med Workbook_Open i ThisWorkbook koden, men hvordan faar jeg arrayet gjort tilgaengelig i andre moduler?

/Lars
Avatar billede lklingenberg Nybegynder
28. august 2006 - 12:03 #1
Alternativt kan koden, der genererer arrayet, ligge i en funktion, jeg kan kalde fra subs i andre moduler.
Avatar billede kabbak Professor
28. august 2006 - 12:05 #2
Public DinVariabel As Variant


sæt den øverst i et modul uden for alle subs
Avatar billede lklingenberg Nybegynder
28. august 2006 - 12:42 #3
Og hvor anbringer jeg saa kodestumpen, der genererer arrayet - og som hvad? Public/Private Sub/Function?
Avatar billede kabbak Professor
28. august 2006 - 15:23 #4
det er ok i Workbook_Open i ThisWorkbook
Avatar billede lklingenberg Nybegynder
28. august 2006 - 16:19 #5
Hm, det kan jeg ikke rigtig faa til at fungere. Jeg har gjort dette:

I Workbook_Open har jeg indsat min kode, som laver mit to-dimensionelle array. Arrayet bliver undervejs ReDim'et, men det gaar jeg ikke ud fra er et problem.

Jeg har sikret mig, at der rent faktisk genereres et array, ved at skrive arrayet ud i en celle direkte fra Workbook_Open.

I et kodemodul har jeg oeverst angivet Public aTest As Variant.

En en sub har jeg testet: sTest = aTest(1,1) & ";" & aTest(1,2)

Jeg faar en Type mismatch fejl (Run-time error '13')

Arrayet skal jeg i oevrigt ogsaa bruge i et kodemodul til en formular - skal jeg vaere opmaerksom paa noget i den forbindelse?

/Lars
Avatar billede lklingenberg Nybegynder
29. august 2006 - 14:07 #6
Fandt selv loesningen:

Anbragte kodestumpen i en Public Function:

Public Function MakeMeAnArrayPlease()

  Dim MyPublicArray As Variant
  ... 'noget kode der regner paa, hvor stort mit array skal vaere
  ReDim MyPublicArray(iArraySize,2)
  ... 'arrayet MyPublicArray bliver lavet
  MakeMeAnArrayPlease = MyPublicArray

End Function

I modulerne kalder jeg saa:

Private Sub IWantToUseTheArray()
  Dim MyArray As Variant
  MyArray = MakeMeAnArrayPlease
  ... 'kode der bruger arrayet MyArray
End Sub
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
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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