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
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
If celda= "" Then
celda.value = celda.Offset([-1], 0).value
End If
Next celda
No hay comentarios:
Publicar un comentario