En este ejercicio, escribiremos código VBA que modifica el contenido y la apariencia de las celdas y las hojas de trabajo.

En primer lugar, abra el editor, añada un módulo, copie en él la macro que aparece a continuación y vincúlela a un botón de fórmula (vuelva a consultar la publicación anterior si es necesario):

Sub propiedades()
    'macro incompleta
    Range ("B3")
End Sub

Queremos modificar la celda B3 al principio de esta macro.

Para visualizar la lista de posibles cosas que se pueden asociar al objeto Range, añada un punto después de Range("B3"):

Asignar una propiedad en VBA Excel

Ahora el editor mostrará ahora las distintas alternativa ...

Para ello, haga clic en "Value" y luego en la tecla Tab para validar su elección.

Sub propiedades()
    'Macro Incompleta
    Range("B3").Value
End Sub

En este caso, la propiedad "Value" representa el contenido de la celda.

A continuación, asignaremos el valor 48 a la celda B3:

Sub properties()
    'B3 = 48
    Range("B3").Value = 48
    'Traducción:
    'EL valor de la celda B3 es igual a 48
End Sub

A continuación, asignamos el valor Texto de muestra a la celda B3 (importante: el texto debe estar dentro de ""):

Sub properties()
    'A8 = Texto de prueba
    Range("B3").Value = "Texto de prueba"
End Sub

En este caso, vamos a modificar la celda B3 de la hoja de trabajo, la celda desde la que realmente comienza el procedimiento (a través de un botón de fórmula). Si crea un segundo botón como este en la hoja de trabajo 2, modificará la celda B3 de esta (Hoja 2).

Para que modifique la celda B3 de la hoja 2 cuando presiona el botón de la hoja 1, debe agregar lo siguiente antes de Rango: Sheets("Nombre_de_hojaX") u Sheets(Número de Hoja).

Sub propiedades()
    'B3 en Hoja 2 = texto de prueba
    Sheets("Hoja2").Range("B3").Value = "Texto de prueba"
    'otra opción
    'Sheets(2).Range("B3").Value = "Texto de prueba"
End Sub

Asimismo, si quisiéramos modificar la celda B3 de la hoja 2 de otro libro de trabajo abierto, tenemos que agregar lo siguiente antes de Hojas y rango: Workbooks("Nombre_de_archivo").

Sub propiedades()
    'B3 en Hoja 2 del libro 2 = Texto de prueba
    Workbooks("Libro2.xlsx").Sheets("Hoja2").Range("B3").Value = "Texto de ejemplo"
End Sub

Aunque con estos ejemplos usamos Value, realmente no es necesario usarlo, ya que si no se especifica nada más será el valor de la celda el que se modifique.

Por ejemplo, estas dos líneas tendrán el mismo efecto:

Range("B3").Value = 48
Range("B3") = 48

BORRAR EL CONTENIDO DE UNA CELDA

Borrar el contenido de una celda
Sub propiedades()
    'Borra el contenido de la columna B
    Range("B:B").ClearContents
End Sub

FORMATO DEL TEXTO VBA EXCEL

Al abrir "Font." aparecerá la lista de propiedades que se pueden aplicar al formato del texto:

Formato de texto en VBA Excel


FORMATO: CAMBIAR EL TAMAÑO DEL TEXTO

Sub properties()
    'Cambia el tamaño del texto en la celda B1 hasta B10
    Range("B1:B10").Font.Size = 20
End Sub

FORMATO: HACER EL TEXTO EN NEGRITA (BOLD)

Sub propiedades()
    'Cambia la celda B1 hasta B10 a negrita(bold)
    Range("B1:B10").Font.Bold = True
End Sub

"Bold = True" significa que los caracteres aparecerán en negrita, tambien se usa (Yes) en lugar de True.

Para eliminar el formato "negrita" del texto, basta con sustituir "True" por "False", si no le diste formato antes no será necesario: 

Sub propiedades()
    'Borrar el formato "negrita" de las celdas B1 hasta B10
    Range("B1:B10").Font.Bold = False
End Sub

FORMATO: ITALIZAR TEXTO

Sub propiedades()
    'Cambiar a cursiva (itálica) el formato de celdas B1 hasta B10
    Range("A1:A8").Font.Italic = True
End Sub

FORMATO: SUBRAYAR TEXTO

Sub propiedades()
    'Subraya las celdas B1 hasta B10
    Range("B1:B10").Font.Underline = True
End Sub

FORMATO: COLOCAR FUENTE

Sub propiedades()
    'Cambiar la fuente en las celdas B1 hasta B10
    Range("B1:B10").Font.Name = "Arial"
End Sub

AGREGAR BORDES CON VBA

como agregar bordes con VBA Excel


Sub propiedades()
    'Añadir un borde a las celdas B1 hasta B10
    Range("B1:B10").Borders.Value = 1
    'value = 0 --> no hay borde
End Sub

CAMBIAR EL FORMATO DE LAS CELDAS SELECCIONADAS ACTUALMENTE

Sub propiedades()
    'Añade un borde a las celdas seleccionadas
    Selection.Borders.Value = 1
End Sub

CAMBIAR LAS PROPIEDADES DE UNA HOJA DE TRABAJO

Sub propiedades()
    'Ocultar una hoja
    Sheets("Hoja3").Visible = 0
    'Visible = -1  --> cancela el efecto 
End Sub

Recuerde ya que sólo hemos presentado una mínima parte de las posibles  personalizaciones que se pueden hacer con VBA.

En el caso de que la propiedad que busca no está descrita en detalle aquí, búscala en la página oficial de Microsoft o en la ayuda de Exel.

Además, el grabador de macros también puede ser de ayuda, si grabas acciones que necesitas, para ver el nombre de la propiedad y poder utilizarla después en tu propia macro.

CAMBIAR EL VALOR DE UNA CELDA EN FUNCIÓN DE OTRA CELDA

En este caso, queremos que B5 tome su valor de B1, primero escribe la palabra en celda B1, luego ejecutar:

Cambiar el valor de una celda en función de otra
Así que le asignaremos el valor de "B1"  a la celda "B5", quedará así:

Sub propiedades()
    'B5 = B1
    Range("B5") = Range("B1")
    'otra opción:
    'Range("B5").Value = Range("B1").Value
End Sub

Si sólo quisiéramos copiar el tamaño del texto de la otra celda, el código sería así:

Sub propiedades()
    Range("B5").Font.Size = Range("B1").Font.Size
End Sub

Todo lo que está a la izquierda del signo "=" toma el valor de lo que está  en el lado derecho del "=".

CAMBIAR EL VALOR DE UNA CELDA EN FUNCIÓN DE SU PROPIO VALOR

Ahora vamos a crear un contador de clics en un botón.

Cada vez que hagamos clic, el valor de A1 se incrementará en 1:

Sub propiedades()
    'Contador de clics A1
    Range("A1") = Range("A1") + 1
End Sub

Excel ejecuta el código línea por línea, por lo que estos comentarios deberían ayudarte a entender el código:

Sub propiedades()
    'A10 en Hoja 2 de Libro 2 = Texto de prueba
    Workbooks("Libro2.xlsx").Sheets("Hoja2").Range("A10").Value = "Texto de prueba"
End Sub

'Por ejemplo: antes de ejecutar el código, A1 tiene el valor 0
Sub propiedades()
    'El botón ha sido pulsado, por lo que el procedimiento está comenzando
    'Por el momento, A1 sigue teniendo el valor 0
    'DURANTE la ejecución de la línea inmediatamente inferior, A1 sigue teniendo el valor 0
    Range("A1") = Range("A1") + 1 'Y ahora el cálculo es: Nuevo_valor_de_A1 = 0 + 1
    'A1 tiene el valor 1 sólo "después" de la ejecución de la línea de código
End Sub

WITH

Con código permite establecer diferentes propiedades en una celda activa:

Sub propiedades()
    ActiveCell.Borders.Weight = 4
    ActiveCell.Font.Bold = True
    ActiveCell.Font.Size = 18
    ActiveCell.Font.Italic = True
    ActiveCell.Font.Name = "Arial"
ActiveCell.Font.Color = vbCyan
End Sub

En este caso, podemos utilizar "with" para evitar tener que repetir "ActiveCell".

Ahora veremos cómo funciona "with":

Sub propiedades()
    'Comienzo de las instrucciones con el comando WITH
    With ActiveCell
        .Borders.Weight = 3
        .Font.Bold = True
        .Font.Size = 18
        .Font.Italic = True
        .Font.Name = "Arial"
.Font.Color = vbCyan
    'Fin de las instrucciones con el comando: END WITH
    End With
End Sub

Hemos evitado repetir ActiveCell, genera el cambio a la celda que dejamos activa (seleccionada).

Establecer propiedades optimizando con with


Aunque no es realmente necesario en este caso, podríamos evitar repetir también .Font, que quedaría así:

Sub propiedades()
    With ActiveCell
        .Borders.Weight = 3
        With .Font
            .Bold = True
            .Size = 18
            .Italic = True
            .Name = "Arial"
        End With
    End With
End Sub

Para las propiedades de colores veremos a continuación.