Post Destacado

Configurando la Impresión Perfecta de un Libro de Excel

Aunque vivimos en una era digital, a veces todavía es necesario imprimir datos, tablas, gráficos, o información de cualquier tipo que hayamos procesado en Excel. Especialmente si estamos hablando de informes financieros, gráficos estadísticos, o simplemente porque preferiremos analizar la información en formato físico. Sin embargo, Excel es muy flexible y las hojas pueden volverse rápidamente muy extensas, lo que puede complicar las tareas de impresión. A continuación, detallaremos el proceso para configurar y preparar tu libro de Excel para imprimirlo de la mejor manera posible en cada caso. Paso 1: Revisión Preliminar Antes de imprimir, debes revisar cómo quedará el documento una vez impreso. Excel ofrece dos opciones para ello: a. Ve a la pestaña "Archivo", luego elige "Imprimir". Aquí puedes ver cómo se verá tu documento antes de imprimirlo. b.    Utiliza la opción 'Diseño de Página'. Esta perspectiva te dará una vista preliminar de cómo se verá tu libro

Búsquedas (más) Avanzadas en VBA con Find (Parte 2)

 


El día de hoy, quiero hablarte de nuevas formas en las que podemos parametrizar nuestras búsquedas en Excel utilizando la función Find, por lo que si no has leído nuestro artículo anterior al respecto, te recomiendo empezar por allí: Búsquedas Avanzadas en VBA con Find (Parte 1). El siguiente paso en nuestro camino, será hablar en mayor profundidad de los diferentes parámetros que podremos configurar las búsquedas, y cómo manejar aquellas situaciones en las que no logremos hallar una coincidencia.

Parámetros de Find:

What/Qué

El primer parámetro es el único obligatorio de la función, y con motivo: es el que establece qué se estará buscando. Debido a esto, puedes escoger si lo declaras explícitamente, ya que por defecto VBA entenderá que el primer parámetro que le entregues a la función será What.

Es decir, puedes escribir:

Set Encontrado = Range("A1:A7").Find(What:="Excel")

o bien:

Set Encontrado = Range("A1:A7").Find("Excel")

¡Las búsquedas con la función Find admiten comodines! Un comodín es un carácter especial que reemplaza a otros, como por ejemplo *.

Por ejemplo:

Set Encontrado = Range("A1:A7").Find(What:="Ex*")

permitirá hallar la coincidencia buscada, dado que el comodín * reemplaza la segunda parte de "Excel" (y también permitirá encontrar palabras como Excelente, dado que ambas empiezan con la raíz Ex.

After/Después de

Utilizamos este parámetro cuando queremos que la búsqueda inicie después de una determinada celda, o en otras palabras, que ignore las celdas anteriores a la que indiquemos como rango "después de".

Set Encontrado = Range("A1:A7").Find(What:="Excel", After:=Range("A3"))

Encontrará la celda A7:


Sin embargo, si la coincidencia no se encuentra luego de la celda especificada, entonces la búsqueda "dará la vuelta" para recorrer el rango desde el inicio.

Set Encontrado = Range("A1:A7").Find(What:="Excel", After:=Range("A4"))

Encontrará la celda A3:


Look In/Buscar en

Nos brinda la opción de buscar en valores, fórmulas, notas y comentarios. Los valores son los resultados que se muestran sobre una celda (ya sea porque hayan sido escritos de tal modo, o porque sean arrojados como resultado de una fórmula), mientras que "buscar en fórmulas" realizará la búsqueda dentro de la fórmula escrita, y no de su resultado. Un valor escrito directamente en la celda, es también considerado fórmula.

Por ejemplo, si deseamos hallar "Excel" en:

LookIn:=xlValues



LookIn:=xlFormulas



LookIn:=xlCommentsThreaded


LookIn:=xlNotes




LookAt/Coincidir con el contenido de toda la celda

Este parámetro tiene dos valores posibles: Lookat:=xlPart devolverá la coincidencia aún si solo coincide con parte de todo el contenido de la celda, mientras que para que Lookat:=xlWhole detecte la coincidencia, deberá producirse la coincidencia con el texto completo que contiene la celda.

SearchOrder /Buscar por filas o columnas

Indica si la búsqueda deberá realizarse primero recorriendo todas las filas (xlRows), o toda las columnas (xlColumns). Esto determinará qué resultado se hallará antes:

Set Encontrado = Range("A1:B7").Find(What:="Excel", SearchOrder:=xlRows)

Devolverá B3:


Mientras que:

Set Encontrado = Range("A1:B7").Find(What:="Excel", SearchOrder:=xlColumns)

Devolverá A7:


MatchCase/Coincidir mayúsculas y minúsculas

Si es verdadero (True), la coincidencia se producirá siempre y cuando coincida el valor buscado en sus mayúsculas y minúsculas, mientras que si es falso (False), no será necesario.

Set Encontrado = Range("A1:B7").Find(What:="Excel", MatchCase:=True)

No encontrará coincidencia en el siguiente rango:


¿Qué hacer si no encontramos la coincidencia?

Tal vez recuerdes del artículo anterior lo que ocurría si buscábamos un valor para el cual no existe coincidencia: la función Finde devolverá Nothing (nada), indicando precisamente que nada fue hallado. Esto es muy importante porque otras funciones de búsqueda en esta situación arrojarán un error, y esa es una situación tediosa de manejar en VBA. 

Sin embargo, en este caso, resultará sencillo: solo debemos verificar tras una búsqueda, si el valor resultado se cargó con "Nothing": si fuera el caso, significará que entonces la búsqueda no arrojó ningún resultado, y deberemos definir qué código ejecutar a continuación. De lo contrario, como es habitual, se cargará con el rango resultado de la búsqueda.

La elección de un camino u otro, podremos hacerla mediante un condicional If... Else:

Set Encontrado = Range("A1:B7").Find(What:="Excel")

If Encontrado Is Nothing Then
    MsgBox "No se encontró una coincidencia."
Else
    MsgBox "La ubicación de la coincidencia es: " & rgFound.Address
End If