Un objecte Range té desenes de propietats. Podeu escriure programes VBA sense parar durant els propers 12 mesos i no utilitzar-los mai tots. Aquí, obtindreu una breu visió general d'algunes de les propietats del rang VBA d'Excel més utilitzades. Per obtenir els detalls complets, consulteu el sistema d'ajuda al VBE. (Consulteu aquests recursos addicionals per obtenir ajuda amb Excel VBA .)
Algunes propietats d'Excel VBA Range són propietats de només lectura, la qual cosa significa que el vostre codi pot mirar els seus valors però no els pot canviar ("Mireu, però no toqueu"). Per exemple, cada objecte d'interval VBA d'Excel té una propietat Address, que conté l'adreça de l'interval. Podeu accedir a aquesta propietat només de lectura, però no podeu canviar-la, cosa que té molt sentit quan hi penseu.
Per cert, els exemples que segueixen solen ser declaracions en lloc de procediments complets. Si voleu provar qualsevol d'aquests (i ho hauríeu de fer), creeu un procediment Sub per fer-ho. A més, moltes d'aquestes declaracions VBA només funcionen correctament si un full de treball és el full actiu.
Excel VBA: la propietat Value
La propietat Value representa el valor contingut en una cel·la. És una propietat de lectura-escriptura, de manera que el vostre codi VBA pot llegir o canviar el valor.
La declaració següent mostra un quadre de missatge que mostra el valor de la cel·la A1 del Full1:
MsgBox Worksheets("Full1").Range("A1").Valor
És lògic que només pugueu llegir la propietat Value per a un objecte Range d'una sola cel·la. Per exemple, la instrucció següent genera un error:
MsgBox Worksheets("Full1").Range("A1:C3").Valor
Tanmateix, podeu canviar la propietat Valor per a un interval de qualsevol mida. La declaració següent introdueix el número 123 a cada cel·la d'un interval:
Fulls de treball ("Full1"). Interval ("A1:C3"). Valor = 123
El valor és la propietat predeterminada per a un objecte d'interval VBA d'Excel. En altres paraules, si ometeu una propietat per a un rang, Excel utilitza la seva propietat Value. Les declaracions següents introdueixen un valor de 75 a la cel·la A1 del full de treball actiu:
Interval("A1").Valor = 75
Interval("A1") = 75
Excel VBA: la propietat Text
La propietat Text retorna una cadena que representa el text tal com es mostra en una cel·la: el valor amb format. La propietat Text és només de lectura. Suposem que la cel·la A1 conté el valor 12,3 i té un format per mostrar dos decimals i un signe de dòlar (12,30 $). La declaració següent mostra un quadre de missatge que conté 12,30 dòlars:
MsgBox Worksheets("Full1").Range("A1").Text
Però la següent declaració mostra un quadre de missatge que conté 12.3:
MsgBox Worksheets("Full1").Range("A1").Valor
Si la cel·la conté una fórmula, la propietat Text retorna el resultat de la fórmula. Si una cel·la conté text, la propietat Text i la propietat Value sempre retornen el mateix, perquè el text (a diferència d'un número) no es pot formatar per mostrar-se de manera diferent.
Excel VBA: la propietat Count
La propietat Count retorna el nombre de cel·les d'un interval. Compta totes les cel·les, no només les cel·les no en blanc. Count és una propietat només de lectura, tal com és d'esperar. La instrucció següent accedeix a la propietat Count d'un rang i mostra el resultat (9) en un quadre de missatge:
MsgBox Range("A1:C3").Count
Excel VBA: les propietats Columna i Fila
La propietat Columna retorna el número de columna d'un interval d'una sola cel·la. El seu company, la propietat Row, retorna el número de fila d'un rang d'una sola cel·la. Tots dos són propietats de només lectura. Per exemple, la instrucció següent mostra 6 perquè la cel·la F3 es troba a la sisena columna:
MsgBox Sheets("Full1").Range("F3").Columna
La següent expressió mostra 3 perquè la cel·la F3 es troba a la tercera fila:
MsgBox Sheets("Full1").Range("F3").Fila
Si l'objecte Interval VBA d'Excel consta de més d'una cel·la, la propietat Columna retorna el número de columna de la primera columna de l'interval i la propietat Fila retorna el número de fila de la primera fila de l'interval.
No confongueu les propietats Columna i Fila amb les propietats Columnes i Files. Les propietats Columna i Fila retornen un sol valor. Les propietats Columns i Rows, en canvi, retornen un objecte Range. Quina diferència fa una "s".
Excel VBA: la propietat Address
Address, una propietat de només lectura, mostra l'adreça de la cel·la d'un objecte Range com a referència absoluta (un signe de dòlar abans de la lletra de la columna i abans del número de fila). La declaració següent mostra el quadre de missatge que es mostra a continuació:
MsgBox Range(Cèl·lules(1, 1), Cel·les(5, 5)). Adreça
Aquest quadre de missatge mostra la propietat Address d'un interval de 5 per 5.
Excel VBA: la propietat HasFormula
La propietat HasFormula (que és només de lectura) retorna True si l'interval d'una sola cel·la conté una fórmula. Retorna Fals si la cel·la conté alguna cosa que no sigui una fórmula (o està buida). Si l'interval consta de més d'una cel·la, VBA només retorna True si totes les cel·les de l'interval contenen una fórmula o False si totes les cel·les de l'interval no tenen una fórmula. La propietat retorna Null si l'interval conté una barreja de fórmules i no fórmules. Null és una mena de terra de ningú: la resposta no és vertader ni fals, i qualsevol cel·la de l'interval pot tenir una fórmula o no.
Heu de tenir cura quan treballeu amb propietats que poden retornar Null. Més concretament, l'únic tipus de dades que pot tractar amb Null és Variant.
Per exemple, suposem que la cel·la A1 conté un valor i la cel·la A2 conté una fórmula. Les declaracions següents generen un error perquè l'interval no consta de totes les fórmules o de totes les no fórmules:
Dim FormulaTest com a booleà
FormulaTest = Interval("A1:A2").HasFormula
El tipus de dades booleà només pot gestionar True o False. Null fa que Excel es queixi i mostri un missatge d'error. Per solucionar aquest tipus de situacions, el millor és assegurar-se que la variable FormulaTest es declari com a Variant en lloc de com a booleà. L'exemple següent utilitza la pràctica funció TypeName de VBA (juntament amb una construcció If-Then-Else) per determinar el tipus de dades de la variable FormulaTest. Si l'interval té una barreja de fórmules i no fórmules, el quadre de missatge mostra Mixt! En cas contrari, mostra True o False .
Sub CheckForFormulas()
Dim FormulaTest com a variant
FormulaTest = Interval("A1:A2").HasFormula
Si TypeName(FormulaTest) = "Nul" Aleshores
MsgBox "Mixt!"
Altrament
MsgBox FormulaTest
Acaba si
End Sub
Excel VBA: la propietat Font
Una propietat pot retornar un objecte. La propietat Font d'un objecte d'Excel VBA Range és un altre exemple d'aquest concepte en funcionament. La propietat Font retorna un objecte Font.
Un objecte Font, com és d'esperar, té moltes propietats accessibles. Per canviar algun aspecte del tipus de lletra d'un rang, primer heu d'accedir a l'objecte Font del rang i després manipular les propietats d'aquest objecte. Això pot ser confús, però potser aquest exemple us ajudarà.
La instrucció següent utilitza la propietat Font de l'objecte Range per retornar un objecte Font. Aleshores, la propietat Negreta de l'objecte Font s'estableix en True. En anglès senzill, aquesta afirmació fa que la cel·la es mostri en negreta:
Interval("A1").Font.Bold = True
La veritat és que realment no necessiteu saber que esteu treballant amb un objecte de lletra especial que es troba en un objecte d'interval VBA d'Excel. Sempre que utilitzeu la sintaxi adequada, funciona bé. Sovint, enregistrar les vostres accions amb la gravadora de macros us indica tot el que necessiteu saber sobre la sintaxi adequada.
Excel VBA: la propietat Interior
Aquí hi ha un altre exemple d'una propietat que retorna un objecte. La propietat Interior d'un objecte Range retorna un objecte Interior (nom estrany, però així s'anomena). Aquest tipus de referència d'objectes funciona de la mateixa manera que la propietat Font.
Per exemple, la instrucció següent canvia la propietat Color de l'objecte Interior contingut a l'objecte Range:
Interval("A1").Interior.Color = 8421504
En altres paraules, aquesta afirmació canvia el fons de la cel·la a gris mitjà. Què és això? No sabíeu que 8421504 és gris mitjà? Per obtenir informació sobre el meravellós món del color d'Excel, consulteu la barra lateral propera "Una imprimació de color ràpida i bruta".
Excel VBA: la propietat de la fórmula
La propietat Formula representa la fórmula en una cel·la. Aquesta és una propietat de lectura-escriptura, de manera que podeu accedir-hi per veure la fórmula en una cel·la o inserir una fórmula en una cel·la. Per exemple, la instrucció següent introdueix una fórmula SUMA a la cel·la A13:
Interval ("A13"). Fórmula = "=SUMA(A1:A12)"
Observeu que la fórmula és una cadena de text i està entre cometes. Observeu també que la fórmula comença amb un signe igual, com ho fan totes les fórmules.
Si la fórmula en si conté cometes, les coses es tornen una mica complicades. Digueu que voleu inserir aquesta fórmula mitjançant VBA:
=SUMA(A1:A12)&"Botigues"
Aquesta fórmula mostra un valor seguit de la paraula Botigues . Perquè aquesta fórmula sigui acceptable, heu de substituir totes les cometes de la fórmula per dues cometes. En cas contrari, VBA es confon i afirma que hi ha un error de sintaxi (perquè n'hi ha!). Així que aquí hi ha una declaració que introdueix una fórmula que conté cometes:
Interval("A13"). Fórmula = "=SUMA(A1:A12)&"" Botigues"""
Per cert, podeu accedir a la propietat Fórmula d'una cel·la encara que la cel·la no tingui una fórmula. Si una cel·la no té fórmula, la propietat Formula retorna el mateix que la propietat Value.
Si necessiteu saber si una cel·la té una fórmula, utilitzeu la propietat HasFormula.
Tingueu en compte que VBA "parla" anglès dels EUA. Això vol dir que per posar una fórmula en una cel·la, heu d'utilitzar la sintaxi dels EUA. Si utilitzeu una versió d'Excel que no sigui en anglès, llegiu la propietat FormulaLocal al sistema d'ajuda.
Excel VBA: la propietat NumberFormat
La propietat NumberFormat representa el format de nombre (expressat com una cadena de text) de l'objecte Range. Aquesta és una propietat de lectura-escriptura, de manera que el vostre codi VBA pot examinar el format del número o canviar-lo. La declaració següent canvia el format de nombre de la columna A a un percentatge amb dos decimals:
Columnes ("A:A").NumberFormat = "0,00%"
Seguiu aquests passos per veure una llista d'altres formats de nombre (millor encara, activeu la gravadora de macros mentre feu això):
Activa un full de treball.
Premeu Ctrl+1 per accedir al quadre de diàleg Format de cel·les.
Feu clic a la pestanya Número.
Seleccioneu la categoria Personalitzada per veure i aplicar algunes cadenes de format de nombre addicionals.