Gå til innhold

Excel VBA - gi en variabel bedre hukommelse?


Anbefalte innlegg

Jeg legger merke til at dersom jeg bruker en variabel (integer) i en selvlagd funksjon, da blir denne satt til 0 (null) etterpå. Dette gjør at jeg ikke får brukt den på nytt. Finnes det en måte jeg kan få den til å huske verdien sin?

 

En workaround er å bruke en celle i Excel og heller referere til verdien i denne, men jeg unngår gjerne dette dersom jeg enkelt kan bruke variabelen slik jeg ønsker.

Lenke til kommentar
Videoannonse
Annonse

Hvis du deklarerer den øverst i modulen vil den være tilgjengelig for all kode i modulen:

 

Dim i As Integer

 

Sub Test()

i = 2

End Sub

 

Sub Test2()

MsgBox i

End Sub

 

Hvis du deklarerer den Public øverst i modulen vil den være tilgjengelig for all kode i alle moduler i hele prosjektet:

 

Public i As Integer

 

Merk at slike variabler nuller seg når koden feiler ved Runtime Error.

 

HTH. Beste hilsen Harald

Endret av Harald Staff
Lenke til kommentar

Det som er litt rart, er at den er tilgjengelig, men kun én gang.

 

MinVar er et tall som refererer til en linje i et annet program. Via en egen funksjon henter jeg informasjon fra forskjellige steder på denne linjen. Funksjonen har jeg kalt FINN(linje, posisjon, lengde). Så FINN(2, 5, 10) ser etter innholdet i 10 posisjoner fra og med posisjon 5 på linje 2.

 

I makroen gjør jeg dette flere ganger for hver linje. F.eks.

 

MinVar = 2

Do

Cells(MinVar, 1) = FINN(MinVar, 5, 10)

Cells(MinVar, 2) = FINN(MinVar, 18, 2)

Cells(MinVar, 3) = FINN(MinVar, 25, 3)

MinVar = MinVar + 1

Loop

 

Den første av de tre vil fungere, men så blir MinVar satt til null og da blir det naturligvis feil. Og da har jeg altså deklarert MinVar øverst i prosjektet som en integer.

Lenke til kommentar

Ah, se der ja. Da fant jeg ut nøyaktig når den nulles ut. Funksjonen FINN har jo parametrene "linje", "posisjon" og "lengde". I denne makroen setter linje til å være lik MinVar, men i koden til FINN nuller jeg ut "linje" (og de andre to parametrene) etter at funksjonen har gjort sitt, og da skjer visst det samme med MinVar. Det blir altså en slags link mellom disse to...

 

Da er alternativene mine enten å bruke workaround, eller å ikke nulle ut linje, posisjon og lengde.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...