Gå til innhold

Forskjellen mellom referansevariabler og vanlige variabler? Med mer. (VBA)


Anbefalte innlegg

Jeg finner ingen god forklaring på forskjellen mellom referansevariabler og 'vanlige' variabler. (For referansevariabler bruker man Set xxx = .Range("xx") . Helt sikkert noen som vet :)

 

En annen ting; er det noen forskjell på do while og for next utover at ved for next så vet man hvor mange ganger loopen skal gå?

 

En tredje ting: Boolsk algebra. Er det bare relevant å dra dette inn når man har funksjoner som gir true/false svar? Er det alltid relevant å dra inn boolsk algebra i slike tilfeller? EDIT: Eller gjelder bare dette når man har IF-setninger? (If true and true then..)

 

Har eksamen snart =)

Endret av lithium
Lenke til kommentar
Videoannonse
Annonse
En annen ting; er det noen forskjell på do while og for next utover at ved for next så vet man hvor mange ganger loopen skal gå?
For Next er et særtilfelle av Do While, en kontrollstruktur som forenkler tellekondisjoner (at en viss handling skal repeteres N ganger), og er ofte optimalisert av kompilatoren dertil. Det betyr at enskjønt Do While godt kan erstatte For Next-blokker, vil den være langt mindre effektiv i samme operasjon.

 

En tredje ting: Boolsk algebra. Er det bare relevant å dra dette inn når man har funksjoner som gir true/false svar? Er det alltid relevant å dra inn boolsk algebra i slike tilfeller? EDIT: Eller gjelder bare dette når man har IF-setninger? (If true and true then..)
Man må gjerne bruke Boolean-datatypen i begge tilfeller. Har man kun behov for to mulige verdier, er Boolean ypperlig.

 

Set xxx = Range("xx") lar xxx peke på plasseringen til "xx"

Mens yy = Range("xx") legger innholdet i cellen "xx" inn i yy?

Det er således det fungerer i praksis, ja.

 

For å forklare dette, må vi først bemerke at returdatatypen til Range("xx") er et objekt, og at VB faktisk tillater utelatelse av navnet til standardegenskapen (Text for tekstbokser, Caption for merknadsbokser, Value for celler, ect.) for alle objekter. Har objektet A en standardegenskap B, kan man altså forkorte A.B = True til A = True. Men, her oppstår det jo en flertydighet; Hvordan skal kompilatoren kunne skille mellom manipulasjon med objektet direkte og med dens standardverdi?

 

Språkutformernes løsning ble å introdusere nøkkelordet Set for alle operasjoner med objekter, slik at Set A = B dermed betyr at referansen til A-objektet kopieres til B og gjør A og B likeledes, mens B = A vil hente ut verdien til A's standardegenskap og legge den i B.

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...