Fer referència a un objecte al vostre codi VBA és important perquè heu d'identificar l'objecte amb el qual voleu treballar a Excel 2016. Després de tot, VBA encara no pot llegir-vos la ment. Es rumoreja que l'objecte de lectura mental s'introduirà a Excel 2019.
Podeu treballar amb tota una col·lecció d'objectes d'un sol cop. Amb més freqüència, però, cal treballar amb un objecte específic d'una col·lecció (com ara un full de treball determinat en un llibre de treball). Per fer referència a un únic objecte d'una col·lecció, poseu el nom o el número d'índex de l'objecte entre parèntesis després del nom de la col·lecció, així:
Fulls de treball ("Full 1")
Tingueu en compte que el nom del full està entre cometes. Si ometeu les cometes, Excel no podrà identificar l'objecte (i assumirà que és un nom de variable).
Si Sheet1 és el primer (o únic) full de treball de la col·lecció, també podeu utilitzar la referència següent:
Fulls de treball (1)
En aquest cas, el número no està entre cometes. Linia inferior? Si us referiu a un objecte utilitzant el seu nom, feu servir cometes. Si feu referència a un objecte utilitzant el seu número d'índex, utilitzeu un nombre senzill sense cometes.
Què passa amb els fulls de gràfics? Un full de gràfic conté un únic gràfic. Té una pestanya de full, però no és un full de treball. Bé, segons resulta, el model d'objectes té una col·lecció anomenada Charts. Aquesta col·lecció conté tots els objectes del full de gràfics d'un llibre de treball (i no inclou gràfics incrustats en un full de treball).
I només per mantenir les coses lògiques, hi ha una altra col·lecció anomenada Fulls. La col·lecció Fulls conté tots els fulls (fulls de treball i fulls de gràfics) en un quadern de treball. La col·lecció de Fulls és útil si voleu treballar amb tots els fulls d'un llibre de treball i no us importa si són fulls de treball o fulls de gràfics.
Per tant, un sol full de treball anomenat Sheet1 és membre de dues col·leccions: la col·lecció Fulls de treball i la col·lecció Fulls. Podeu fer-hi referència de dues maneres:
Fulls de treball ("Full 1")
Fulls ("Full 1")
Navegació per la jerarquia
Si voleu treballar amb objectes d'Excel, tots es troben sota l'objecte Aplicació. Així que comenceu escrivint Aplicació .
Tots els altres objectes del model d'objectes d'Excel es troben sota l'objecte Aplicació. Arribeu a aquests objectes movent-vos cap avall per la jerarquia i connectant cada objecte al vostre camí amb l'operador de punt (.). Per arribar a l'objecte Workbook anomenat Book1.xlsx, comenceu amb l'objecte Application i navegueu fins a l'objecte de col·lecció Workbooks:
Application.Workbooks ("Llibre1.xlsx")
Per anar més lluny fins a un full de treball específic, afegiu un operador de punts i accediu a l'objecte de col·lecció de Fulls de treball:
Aplicació.Llibres de treball(“Llibre1.xlsx”).Fulls de treball(1)
Encara no prou lluny? Si realment voleu obtenir el valor de la cel·la A1 del primer full de treball del llibre de treball anomenat Book1.xlsx, heu de navegar un nivell més fins a l'objecte Range:
Aplicació.Llibres de treball(“Llibre1.xlsx”).Fulls de treball(1).Range(“A1”).Valor
Quan feu referència a un objecte Range d'aquesta manera, s'anomena referència plenament qualificada. Heu dit a Excel exactament quin rang voleu, en quin full de treball i en quin llibre de treball, i no heu deixat res a la imaginació. La imaginació és bona en les persones però no tant en els programes informàtics.
Per cert, els noms dels llibres de treball també tenen un punt per separar el nom del fitxer de l'extensió (per exemple, Book1.xlsx). Això és només una coincidència. El punt d'un nom de fitxer no té res a veure amb l'operador de punt.
Simplificació de les referències d'objectes
Si haguéssiu de qualificar completament cada referència d'objectes que feu, el vostre codi es faria força llarg i podria ser més difícil de llegir. Afortunadament, Excel us ofereix algunes dreceres que poden millorar la llegibilitat (i estalviar-vos una mica d'escriptura). Per començar, sempre s'assumeix l'objecte Aplicació. Només hi ha pocs casos en què té sentit escriure'l. Si ometeu la referència a l'objecte de l'aplicació, l'exemple escurça a
Llibres de treball(“Llibre1.xlsx”).Fulls de treball(1).Interval(“A1”).Valor
És una millora força bona. Però espera, hi ha més. Si esteu segur que Book1.xlsx és el llibre de treball actiu, també podeu ometre aquesta referència. Ara estàs a punt
Fulls de treball(1).Range(“A1”).Valor
Ara estàs arribant a algun lloc. Has endevinat la següent drecera? Això està bé. Si sabeu que el primer full de treball és el full de treball actiu actualment, Excel assumeix aquesta referència i només us permet escriure
Interval(“A1”).Valor
Contràriament al que algunes persones poden pensar, Excel no té un objecte Cell. Una cel·la és simplement un objecte Range que consta d'un sol element.
Les dreceres descrites aquí són excel·lents, però també poden ser perilloses. Què passa si només penseu que Book1.xlsx és el llibre de treball actiu? Podríeu obtenir un error, o pitjor, podríeu obtenir un valor equivocat i ni tan sols adonar-vos que és incorrecte. Per aquest motiu, sovint és millor qualificar completament les referències d'objectes.
L'estructura With-End With us ajuda a qualificar completament les vostres referències, però també ajuda a fer que el codi sigui més llegible i redueix l'escriptura. El millor dels dos mons!