¿Cómo hacer una macro en excel que seleccione un rango mediante un inputbox?

Quiero hacer una macro en excel que me permita seleccionar un rango mediante inputbox. La idea es que en el inputbox yo le diga el número de filas (que vaya de la última hacia arriba) a seleccionar.

Por ejemplo que un inputbox sea para dirigirme a la celda final (a ese inputbox ya sé que lo lleno escribiendo la celda a la que me quiero dirigir). Por ejemplo si quiero ir a la celda A21, sólo escribo "A21".

Mi problema es con el segundo inputbox, necesito escribir en el segundo inputbox el número de filas que deba seleccionar. Por ejemplo, yo quiero tener un rango de "A2" a "A10", por lo tanto, necesito escribir en este segundo inputbox solamente el número "9" (donde "9" es el numero de filas entre "A2" y "A10".

La finalidad es para modificar el rango de una gráfica de línea, donde el usuario seleccione el número de datos que quiere graficar, pues la base de datos es acumulativa dia a dia y el usuario no desea visualizar toda la información, tal vez sólo requiere la gráfica de los últimos 10 días o de los 30 últimos.

La hoja de excel usa dos columnas, la columna A son fechas y la B son ventas, al lado de la información se tiene la gráfica lineal que muestra el movimiento de las ventas con respecto al tiempo. La finalidad de los inputbox es que me lleve a la última fila (la fecha y ventas más recientes) y que en el segundo el usuario escriba cuantos días quiere ver en la gráfica.

1 respuesta

Respuesta
1

De esta forma puedes seleccionar el rango de celdas

ini = InputBox("Celda inicial")
fin = InputBox("Filas")
Set cel = Range(ini)
Range(cel, Cells(cel.Row + fin - 1, cel. Column)).Select

Saludos. Agradezco mucho tu respuesta, cambié un poco el script:

ini = InputBox("Celda inicial")
fin = InputBox("Filas")
Set cel = Range(ini)
Range(cel, Cells(cel.Row - fin, cel.Column)).Select
End Sub

De esta forma en el primer inputbox escribo la celda final y en el segundo sólo escribo el número de espacios que deseo ir arriba. Sin embargo, este nuevo rango no sé como poder incluirlo en la gráfica. En las líneas de la macro me aparece lo siguiente:

ActiveSheet.ChartObjects("Ventas Gráfico").Activate
ActiveChart.SeriesCollection(1).Values = "='Hoja1'!$B$16:$B$20"
ActiveChart.SeriesCollection(3).XValues = "='Hoja1'!$A$16:$A$20"

Prueba así

ini = InputBox("Celda inicial")
fin = InputBox("Filas")
Set cel = Range(ini)
Set rango = Range(cel, Cells(cel.Row - fin, cel.Column))
ActiveSheet.ChartObjects("Ventas Gráfico").Activate
ActiveChart.SeriesCollection(1).Values = "='Hoja1'!" & rango.Address
ActiveChart.SeriesCollection(3).XValues = "='Hoja1'!" & rango.Address

Te agradezco infinitamente. Te pongo como quedó al final la macro, se agregaron dos columnas más de ventas para hacer el análisis comparativo. Con la macro se va a mejorar mucho la actividad, nuevamente gracias.

Sub internetsolucionrango()
'
' internetsolucionrango Macro
'
'
inicio = InputBox("Celda inicial")
iniacvs = "B" & inicio
fin = InputBox("Filas")
Set cel = Range(iniacvs)
Set rango = Range(cel, Cells(cel.Row - fin, cel.Column))
ActiveSheet.ChartObjects("Ventas Gráfico").Activate
ActiveChart.SeriesCollection(1).Values = "='Hoja1'!" & rango.Address

inichema = "C" & inicio
Set cel = Range(inichema)
Set rango = Range(cel, Cells(cel.Row - fin, cel.Column))
ActiveSheet.ChartObjects("Ventas Gráfico").Activate
ActiveChart.SeriesCollection(2).Values = "='Hoja1'!" & rango.Address

inimemo = "D" & inicio
Set cel = Range(inimemo)
Set rango = Range(cel, Cells(cel.Row - fin, cel.Column))
ActiveSheet.ChartObjects("Ventas Gráfico").Activate
ActiveChart.SeriesCollection(3).Values = "='Hoja1'!" & rango.Address

inifecha = "A" & inicio
Set cel = Range(inifecha)
Set rango = Range(cel, Cells(cel.Row - fin, cel.Column))
ActiveSheet.ChartObjects("Ventas Gráfico").Activate
ActiveChart.SeriesCollection(1).XValues = "='Hoja1'!" & rango.Address
ActiveChart.SeriesCollection(2).XValues = "='Hoja1'!" & rango.Address
ActiveChart.SeriesCollection(3).XValues = "='Hoja1'!" & rango.Address
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas