Med referanse til et objekt i VBA-kode er viktig fordi du må identifisere objektet du ønsker å jobbe med i Excel 2016. Tross alt, VBA kan ikke lese tankene dine - ennå. Det går rykter om at sinnet-lesing objektet vil bli introdusert i Excel 2019.
Du kan arbeide med en hel samling av objekter i ett slag. Oftere, derimot, må du jobbe med et bestemt objekt i en samling (for eksempel en bestemt regneark i en arbeidsbok). For å referere til en enkelt objekt fra en samling, sette deg objektets navn eller indekstallet i parentes etter navnet på samlingen, som dette:
regneark ( "Ark1")
Legg merke til at arket navn er i anførselstegn . Hvis du utelater anførselstegn, vil Excel ikke være i stand til å identifisere objektet (og vil anta at det er en variabel navn).
Hvis Ark1 er den første (eller eneste) regneark i samlingen, kan du også bruke følgende referanse: Search regneark (1) i dette tilfellet er antall ikke anbefale i anførselstegn. Bunnlinjen? Hvis du refererer til et objekt ved å bruke sitt navn, bruke anførselstegn. Hvis du refererer til et objekt ved å bruke indeksnummer, kan du bruke et vanlig tall uten anførselstegn.
Hva om chart ark? Et diagram blad inneholder et enkelt diagram. Den har en fane ark, men det er ikke et regneark. Vel, som det viser seg, har objektmodellen en samling kalt Charts. Denne samlingen inneholder alle de diagramobjekter i en arbeidsbok (og omfatter ikke diagrammer innebygd i et regneark).
Og bare for å holde ting logisk, det er en annen samling kalt blad. The Ark Samlingen inneholder alle ark (regneark og kart ark) i en arbeidsbok. The Ark samlingen er nyttig hvis du ønsker å jobbe med alle arkene i en arbeidsbok og ikke bryr seg om de er regneark eller kart ark
Så, et enkelt regneark heter Ark1 er medlem av to samlinger. Den regneark innsamling og Ark-samlingen. Du kan referere til det på en av to måter:
regneark ( "Ark1") Sheets ( "Ark1")
Navigere gjennom hierarkiet
Hvis du ønsker å jobbe med Excel-dokument, er de alle under Application objektet. Så starter ved å skrive Søknad
.
Hver andre objekt i Excel objektmodellen er under Application objektet. Du får disse objektene ved å flytte nedover i hierarkiet og koble hvert objekt på vei med punktum (.) Operatør. For å komme til arbeidsbok objekt som heter Book1.xlsx, start med Application objektet og naviger ned til Arbeidsbøker samling objekt:
Application.Workbooks ( "Book1.xlsx")
For å navigere lenger til et bestemt arbeidsark, legge en prikk operatør og få tilgang til regneark samling objekt.
Application.Workbooks ( "Book1.xlsx") regneark (1)
Ikke langt nok ennå? Hvis du virkelig ønsker å få verdien fra celle A1 på det første regnearket av arbeidsbok heter Book1.xlsx, må du navigere en mer nivå til Range objekt.
Application.Workbooks ( "Book1.xlsx") Regneark (1) .Range ( "A1"). Verdi
Når du refererer til en Range objekt på denne måten, det som kalles en fullt kvalifisert referanse.
du har fortalt Excel akkurat som spenner du vil, som regneark og der arbeidsbok, og har forlatt ingenting til fantasien. Fantasien er gode i mennesker, men ikke så bra i dataprogrammer.
Forresten, arbeidsbok navnene har også en prikk for å skille filnavnet fra utvidelsen (for eksempel Book1.xlsx). Det er bare en tilfeldighet. Prikken i et filnavn har ingenting å gjøre med dot operatør.
Forenklet objektreferanser
Hvis du var nødvendig å kvalifisere hvert objekt referanse du gjør, koden ville bli ganske lang , og det kan være vanskeligere å lese. Heldigvis gir Excel deg noen snarveier som kan forbedre lesbarheten (og spare deg noen å skrive). For det første, er programmet objektet alltid antatt. Det er bare noen få tilfeller når det er fornuftig å skrive det. Utelate Søknad objekt referanse forkorter eksempel for bedriften Arbeidsbøker ( "Book1.xlsx"). Regneark (1) .Range ( "A1"). Verdi
Det er en ganske god forbedring. Men vent, det er mer. Hvis du er sikker på at Book1.xlsx er den aktive arbeidsboken, kan du utelate at referansen også. Nå er du ned for bedriften regneark (1) .Range ( "A1"). Verdi
Nå du får et sted. Har du gjettet det neste snarvei? Det er riktig. Hvis du kjenner det første regnearket er det aktive regnearket, Excel forutsetter at referanse og tillater deg å bare skrive
Range ( "A1"). ValueContrary til hva noen folk tror, ikke Excel ikke har en Cell objekt. En celle
er rett og slett en Range objekt som består av bare ett element.
De snarveier som beskrives her er stor, men de kan også være farlig. Hva om du bare tror
Book1.xlsx er den aktive arbeidsboken? Du kan få en feilmelding, eller enda verre, du kunne få feil verdi, og ikke engang klar over det er galt. Av den grunn er det ofte best å fullt ut kvalifisere objektreferanser.
Med-end med struktur hjelper deg fullt kvalifisere referansene dine, men også bidrar til å gjøre koden mer lesbar og kutter ned på å skrive. Det beste fra begge verdener!