Introducir por el Usuario un Rango de trabajo

Lo que deseo hacer es que El Usuario sea el que le de a una Macro,(una vez puesta a correr), el Rango de la hoja donde vayan a ser ejecutados el resto de las instrucciones de esa Macro. Algo similar a un msgbox pero no con botones, sino con un (o varios) campo (s) donde se pongan los rangos de celdas desde y hasta. Por. Ej: "c3: ab70"
.- Gracias. CREZ.-
Al 29/07/2011
{"lat":-5.2660078828055,"lng":-61.875}

1 respuesta

Respuesta
1
Te dejo un ejemplo: si necesitas realizar una búsqueda en un rango, podes dejar las celdas de inicio y fin en 2 celdas que la rutina buscará:
ini=Range("H1") 'en H1 colocarás como valor C3
fini=Range("H2") 'en H2 colocarás la 2da ref
rgoaux = ini & ":" & ini 'te quedará como resultado C3:AB70
'otra forma de establecer un rango es utilizando 1 sola celda
rgoaux=Range("H3") 'aquí tendrías C3:AB70
'ahora realizamos la búsqueda en ese rango
Set busco = ActiveSheet.Range(rgoaux).Find(.....................)
Sdos. No olvides finalizar la consulta
Hola elsamatilde.
En primer lugar, Gracias por tomar interés en mi pregunta, y tan pronto, ademas.
Sin embargo, lamentablemente para mi, debo decirle que quizá yo no logré explicarme bien: lo intento de nuevo:
Lo que necesito hacer es esto: Una vez que la Macro ya está iniciada, corriendo, que ella -la macro -, lance o genere un cuadroal usuario pidiendo que se le suministre (( desde afuera y por teclado, obviamente)) un Rango. Con esa información ya grabada en una variable (supongo), es que corre el resto de las cosas que la macro hará.
No deseo escribir el rango de trabajo DENTRO de la Macro en el momento de escribirla, sino que el programa esté preparado para aceptar la macro por teclado, desde afuera y en el momento de correrla.
Espero esta vez haberme explicado mejor.
Gracias de nuevo, esta vez por anticipado -:)
CREZ.-
Bien, la opción que te dejé no era de todos modos dejando DENTRO de la macro el rango, sino solamente una celda donde ahí sí dejarías el rango.
Pero entiendo que estás necesitando ingresarlo con un InputBox:
Sub tu_macro()
'x Elsamatilde
'aquí tus instrucciones previas a la solicitud de rango
'.....
rgo = InputBox("Ingresa rango de trabajo", "SOLICITUD")
If IsEmpty(rgo) Or rgo = "" Then
MsgBox "no indicaste rango, el proceso se cancela"
Exit Sub
End If
'sigue tu rutina con el rgo ingresado
'debes agregar un control de error por si el rango no es válido
On Error GoTo sin_rgo
'por ej, se selecciona el rgo ingresado
Range(rgo).Select
'.....
'.....
Exit Sub
sin_rgo:
MsgBox "Error en el ingreso de la referencia"
End Sub
Hay 2 situaciones que deberás controlar y derivar:
1- Que cancelen la ventana del InputBox, en mi ej el proceso se cancela . Podrás derivarlo a otra sección de tu macro
2- Que la ref ingresada no es válida, en mi ej se va al final y luego de un mensaje también se cancela.
Sdos. No dejes la consulta sin finalizar si esta parte quedó resuelta
Hola Elsamatilde, buenos días:
Desde mi rincón, le extiendo a Ud. mis expresivo y sincero agradecimiento por su interés y colaboración para conmigo. Y ademas, como ya indiqué antes: Con Rapidez y Eficiencia.
Me extiendo un poco más al decir esto: No sólo es mi primera incirsion en la página de "todo experto.com", sino que en los pocos minutos (aún ni horas), que la he recorrido bastante parcialmente, me he dado cuenta que Uds., "Expertos", ayudan a gente que como yo, tiene una duda, han quizá agotado algunas fuentes de información y finalmente la han encontrado en gente que, aunque lejana, está cercana en la Solidaridad Humana y en el Respeto hacia los demás.
Bien por Ud. y Bien por la página, y desde ya un Amigo más, en mi...
CREZ.-
01/08/2011

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas