Avatar billede celador Nybegynder
22. oktober 2009 - 00:47 Der er 12 kommentarer

Tømning af array inden afslutning af sub

Hvordan tømmer jeg mine arrays inden jeg afslutter min sub?

Så jeg er sikker på at de ikke indeholder data hvis subben køres igen?

Jeg anvender mit array som global og troede egentlig bare jeg skulle ReDim Sales(samme dimensioner) og så var den genoprtettet som tom?
Avatar billede nissen2630 Novice
22. oktober 2009 - 00:57 #1
Array.Clear(dit_array,0,dit_array.Length)

Eks.:
Dim t() As String = {"4535345", "345345345", "5353"}
Array.Clear(t, 0, t.Length)
Avatar billede celador Nybegynder
22. oktober 2009 - 01:10 #2
hmm... kan godt være det er mig som ikke helt fatter den kommando i forhold til mit array.

Der er tale om et fler dimensioneret array og i VBA, ved ikke om det gør en forskel i forhold til Array.Clear

...ellers må du meget gerne forklare kommandoen :)
Avatar billede nissen2630 Novice
22. oktober 2009 - 01:25 #3
UPS..Overså at det var VBA
Avatar billede nissen2630 Novice
22. oktober 2009 - 01:31 #4
Dette er skrevet i VBA Excel 2003
og testet på en knap :-)

Private Sub CommandButton1_Click()
  Dim i() As String

  ReDim i(3) As String
  i(0) = "1"
  i(1) = "2"
  i(2) = "3"
  For x = 0 To 2
    MsgBox i(x)
  Next

  ReDim i(3) As String
  For x = 0 To 2
    MsgBox i(x)
  Next

End Sub
Avatar billede tjacob Juniormester
22. oktober 2009 - 11:35 #5
Som du selv siger -og nissen2630- så skal du blot redimme.
Nulstiller det ikke?
Avatar billede tjacob Juniormester
22. oktober 2009 - 11:44 #6
Du kan også bruge Erase statement, men så skal arrayet redimmes inden du bruger det igen alligevel:

Dim Arr() as long

Redim Arr(2, 2, 2)

-tilskriv værdier her

Redim Arr(2, 2, 2) -sætter alle værdier til 0

ELLER:  Erase Arr -sletter alle dimensioner, så du har et uerklæret array Arr() igen
Avatar billede celador Nybegynder
22. oktober 2009 - 15:11 #7
Jeg fik en besked om at arrayet allerede var dimensioneret og derfor kunne jeg ikke bruge ReDim?! Det troede jeg var hele formålet med redim, at man løbende kunne redfinere sit array eller i mit tilfælde tømme det :)
Avatar billede tjacob Juniormester
22. oktober 2009 - 15:21 #8
Du kan ikke redimme et array der er erklæret med dimensioner.

Dim Arr(4) as Long  -kan IKKE redimmes

Dim Arr() as Long
Redim Arr(4)        -kan redimmes
Avatar billede nissen2630 Novice
22. oktober 2009 - 18:27 #9
Hvilken version af Excel bruger du ?
Avatar billede celador Nybegynder
22. oktober 2009 - 20:29 #10
Bruger 2007...

Jeg lavede en lille løkke til at tømme arrayet i stedet for, så løber den bare alle elemtenterne igennem og sletter dem, men troede det kunne ordnes med en ReDim - men jeg tog åbenbart fejl?
Avatar billede tjacob Juniormester
23. oktober 2009 - 18:33 #11
Du KAN nøjes med en Redim, men arrayet skal erklæres UDEN dimensioner.

Hvor du nu har:  Dim DitArray(5,5) As Etellerandet

Skal du ændre til:

Dim DitArray() As Etellerandet
Redim DitArray(5,5)


-Så kan du redimme alt det du vil.
Avatar billede tjacob Juniormester
23. oktober 2009 - 18:35 #12
Altså i din globale erklæring: Dim Ditarray()

Lige før første gang du tilskriver værdier: Redim Ditarray(5,5)
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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