Macro para copiar celda adyacente si está en blanco

Una macro muy necesaria al empezar con visual basic es poder rellenar celdas en blanco de algún listado copiando el valor de la celda de al lado o de la celda de arriba, para ello es necesario conocer cómo funciona la propiedad offset en visual basic.

Declaración Variable Range

Antes de seleccionar el rango de celdas, declararemos una variable Range. Este rango de celdas, será variable, ya que en cada archivo que empleemos muy probablemente tenga un largo distinto.


Dim celda as Range

Seleccionar rango de celdas

Antes de indicar que se copien las celdas, debemos seleccionar un rango de celdas a analizar. La forma en cómo seleccionar un rango de celdas es indiferente para esta entrada. Vamos a suponer en este caso que tenemos un rango de celdas seleccionado.

A partir de aquí, vamos a indicar que en todas las celdas seleccionadas, analice una por una, y en el caso que esté vacía, esta celda tome el valor de la celda adyacente a esta.

Propiedad Offset.

Con la propiedad Offset, podremos indicar que el valor de la celda que decidamos, tome el valor de la celda de nuestra variable. Si no recuerdas cómo, mejor consulta la entrada cómo funciona la propiedad offset en visual basic.

Copiar la celda de la izquierda

En este ejemplo, en caso de encontrar la celda vacía, copiará la celda de su izquierda. 
Con la propiedad offset, nos moveremos 0 filas hacia arriba o abajo, y -1 columnas, es decir, la columna de la izquierda.

            For Each celda In Selection

                If celda= "" Then

                    celda.value = celda.Offset(0, [-1]).value


                End If



            Next celda


Copiar la celda de arriba

En este otro ejemplo, en caso de encontrar la celda vacía, copiará la celda de arriba. 
Con la propiedad offset, nos moveremos -1 filas hacia arriba, y 0 columnas.

            For Each celda In Selection

                If celda= "" Then

                    celda.value = celda.Offset([-1], 0).value


                End If



            Next celda

No hay comentarios:

Publicar un comentario

Otras entradas