Navegando por una masa (base) de datos

En esta oportunidad vamos a codificar dos procedimientos que nos permitan acceder a un archivo de datos y navegar en él para ir a la última fila o columna de datos, para saber el contenido de dichas celdas, su fila, columna y su dirección absoluta.

Primer ejemplo:

El archivo que vamos a usar para ello se llama Pedidos.xls, para abrirlo, haga clic aquí

Abra su libro de macros MisMacros03.xlsm. Vaya al editor e inserte un nuevo módulo que lo llamaremos Navegando. Allí vamos a ingresar el siguiente procedimiento. Al final debe estar también el procedimiento AbrirLibro.

Digite el procedimiento o copie y pegue.

Sub Navega01()


' Llamamos al procedimiento AbrirLibro
' para abrir el libro Pedidos.xls

AbrirLibro
'
' Seleccionamos la hoja Pedidos
Worksheets("Pedidos").Select
'
' Seleccionamos B10
Range("B10").Select
MsgBox "Observe que la primera fila de datos empieza en B10." + Chr(13) + _
"La columna A está vacía."
'
' Nos vamos a la última fila de datos (último registro)
Selection.End(xlDown).Select
MsgBox "Observe la celda activa."
'
' Nos vamos a la última columna de datos
Selection.End(xlToRight).Select
MsgBox "Observe la celda activa."
' Nos vamos a la primera fila de datos
Selection.End(xlUp).Select
MsgBox "Observe la celda activa."
' Nos vamos a la primera columna de datos
Selection.End(xlToLeft).Select
MsgBox "Observe la celda activa."

End Sub

Colocaremos debajo de este procedimiento el otro AbrirLibro:


Sub AbrirLibro()

fName = Application.GetOpenFilename
Workbooks.Open fName

End Sub

Ejecute el procedimiento y siga paso a paso lo que hace cada línea del programa. Hemos puesto MsgBox con la intención que el mismo se detenga, le permita observar el resultado de la instrucción anterior y continuar después.

Segundo ejemplo

En este ejemplo, completaremos lo que dijimos al comienzo: extraer información de ciertas celdas extremas de la masa de datos.

Empezamos abriendo el mismo archivo Pedidos.xlsx. Si ya lo tiene abierto y el procedimiento vuelve a abrirlo, no se preocupe, que lo abra.

He aquí el procedimiento:

Sub Navega02()


' Ahora vamos a saber nro de fila y columna de datos
' Vamos a abrir Pedidos.xls
AbrirLibro
' Seleccionamos la hoja Pedidos
Worksheets("Pedidos").Select
'
' Queremos saber cuál es la primera fila y columna de datos
' Sólo controlamos hasta la fila 99 y columna Z
xCel = InputBox("Digite la primera celda de datos" + Chr(13) + "sin tomar en cuenta las filas de cabecera")
'
' Vamos a convertir en número la fila y columna de dicha celda
If Len(Trim(xCel)) = 3 Then
nFila = Val(Right(xCel, 2))
Else
If Len(Trim(xCel)) = 2 Then
nFila = Val(Right(xCel, 1))
End If
End If
nCol = Val(Asc(Left(UCase(xCel), 1)) - 64)
' Seleccionamos la celda ingresada
Range(xCel).Select
MsgBox " "
'
' Nos vamos a la última fila de datos
Selection.End(xlDown).Select
' Extraemos nro de fila, columna, celda, contenido y datos
xFila = ActiveCell.Row
xCol = ActiveCell.Column
xdato = ActiveCell.Cells
xCelda = ActiveCell.Address

MsgBox "Número de fila: " & xFila & Chr(13) & _
"Número de columna: " & xCol & Chr(13) & _
"Celda absoluta: " & xCelda & Chr(13) & _
"Contenido de la celda: " & xdato & Chr(13) & _
"Número de filas o registros: " & xFila - nFila + 1
'
' Veamos cuántas columnas de datos tenemos
Range(xCel).Select
'
rCol = Selection.End(xlToRight).Column
MsgBox "Ultima columna de datos: " & rCol & Chr(13) & _
"Número de columnas de datos: " & rCol - nCol + 1

End Sub

El procedimiento se encuentra en el módulo “Navegando” del archivo “mismacros03.xlsm”, el cual puede abrirlo haciendo clic aquí.

En la siguiente imagen se tiene una parte de este procedimiento.

Guarde su libro MisMacros03.xlsm. En la siguiente sesión haremos uso de otros ejemplos con el objeto RANGO

haga clic aquí