> Como se podria crear una macro que desde una hoja, por ejemplo Hoja1
> busque los datos en una columna determinada, por ejemplo b, de la hoja 2.
op1: usando el metodo <objeto hoja>.Cells.Find(........
op2: usando funciones de busqueda desde vba: WorksheetFunction.VLookup(.........
op_n: ??? (que es exactamente lo que necesitas resolver ?)
saludos,
hector.
"Héctor Miguel" escribió:
> .
>
> Lo que quiero es estar en la hoja1, que al hacer click en el metodo abreviado de la macro, por ejemplo, Ctrl+b
> se habra el cuadro de dialogo (de la ficha inicio) Buscar y seleccionar; ingresar el dato a buscar en dicho cuadro de dialogo
> y que la busqueda se realice en la columna b de la hoja2 ...
prueba con una macro +/- como la siguiente:
Sub mi_Busqueda()
On Error GoTo NoExiste
With Worksheets("hoja2").Columns("b")
With .Cells.Find(InputBox("Introduce el dato a buscar"))
.Parent.Activate
.Select
End With
End With
Exit Sub
NoExiste:
MsgBox "El dato solicitado no existe !!!"
End Sub
saludos,
hector.
__ previos __
"Héctor Miguel" escribió:
> .
>
> Probe con la macro, pero sucede lo siguiente: ctrl+b; se abre el cuadro de dialogo buscar y reemplazar
> se ingresa el dato a buscar,click en buscar todos y se desplaza a la hoja 2, encontrando el dato.
> Te comento que antes cambie en opciones a buscar en el Libro.-
> La idea es que no se cambie de hoja, informando los resultados de la hoja2 en la Hoja1.
> Otra cosa que me llamo la atencion, y solo por curiosidad, es que el InputBox("Introduce el dato a buscar"))
> no aparece como Introduce el dato a buscar y MsgBox "El dato solicitado no existe !!!" tampoco aparece
> senalando en cambio "No se pueden encontrar los datos de la busqueda".
> Pero te insisto, es solo curiosidad, porque supongo que deberian aparecer los textos que tu senalaste en la macro o no?.
1) en tanto NO asignes la combinacion de teclas {ctrl}+b a "la macro" (en el dialogo de las opciones de macro)
el atajo seguira "haciendo lo suyo": lanzar el dialgo integrado de buscar (y reemplazar) en vez de ejecutar "la macro"
2) si no quieres que se cambie de hoja, entonces falta un poco mas de informacion (p.e.)
- una vez que se encuentre el dato buscado (si existe)... que esperas que haga la macro ?
- buscas una funcionalidad similar a la de la funcion buscarv(.. ?
- de que columna se rescata algun dato a mostrar ?
- depositar algun dato en alguna celda ?
- mostrar un cuadro de mensaje ?
- ???
saludos,
hector.
"Héctor Miguel" escribió:
> .
>
- para conservar el dialogo (integrado) de "buscar y reemplazar", no hace falta macro (simplemente pulsa ctrl+B)
- para que la macro haga "simplemente nada"... (creo que) la mejor macro es que no exista macro (?) :))
otras posibilidades ?... (p.e.)
- si el dato por el que se pregunta existe SOLO una vez en la hoja donde se busca (???)
- poner en una celda el dato que se busca y en otra funciones de busqueda (buscarv(... ?)
- manipular por macro el dialogo integrado (de buscar y reemplazar) y establecer un tiempo para "el regreso" (a la hoja activa)
- esto pudiera resultar en que el tiempo establecido... o se queda corto... o resulta excesivo (???)
- usar un cuadro de mensaje para informar el resultado de la busqueda (ya sea que ese encuentra el dato o no)
(probablemente salgan mas alternativas, pero... cual preferirias usar ?)
saludos,
hector.
__ OP __
> ... asigne ctrl+b en opciones de macro, y se ejecuta la macro ...
> ... visualmente, me gusta mas el cuadro de dialogo "Buscar y reemplazar", asi es que desearia conservar esa forma.
> ... encontrado el dato, que hara la macro?. Simplemente nada ...
> ... me preguntan habitualmente, mientras estoy confeccionando Estado.xls, cuando se dicto una resolucion.
> Eso me obliga a cambiarme de hoja a Historico y realizar la operacion, cerrar y volver a la Hoja1 (Estado Diario).
> Es mas sencillo (que es la idea de automatizar) ctrl+b, ingreso el dato, informo que tales dias
> cierro y estoy en la misma hoja en la que estaba trabajando...
"Héctor Miguel" escribió:
> .
>
> ... Tal como tu dices, manipular por macro el tiempo del cuadro de dialogo integrado
> podria resultar muy corto o muy largo, por lo que no me parece adecuado para lo que busco.-
ok, enterado ! :))
> El dato puede existir mas de una vez, y de hecho, lo mas probable es que en el transcurso de un periodo de un mes, aparezca 4 o 5 veces.-
> Usar un cuadro de mensajes, podria ser una opcion a explorar, ya que ignoro como podria quedar visulamente y/o funcionar.- ...
por que no porporcionas informacion mas completa y detallada desde el principio (???) - me explico-
- que tiene que ver "el dato" que buscas con "... el transcurso de un mes ..." (???)
- acaso necesitas tambien delimitar la busqueda en algun rango de fechas ?
- si utilizaras varias funciones buscarv(... => que columna(s) tiene(n) el(los) dato(s) que te interesa mostrar ?
como se podria (RE)crear un modelo de trabajo (exactamente) "igual al tuyo" ?
(SIN tener que adivinar o suponer el arreglo y la necesidad que tu tienes en la realidad ?)
saludos,
hector.
H?ctor Miguel wrote:
hola, Jorge !
01-nov-09
hola, Jorge !
prueba con una macro +/- como la siguiente:
Sub mi_Busqueda()
On Error GoTo NoExiste
With Worksheets("hoja2").Columns("b")
With .Cells.Find(InputBox("Introduce el dato a buscar"))
.Parent.Activate
.Select
End With
End With
Exit Sub
NoExiste:
MsgBox "El dato solicitado no existe !!!"
End Sub
saludos,
hector.
__ previos __
Previous Posts In This Thread:
EggHeadCafe - Software Developer Portal of Choice
Silverlight Line Of Business Applications With Offline WPF Versions
http://www.eggheadcafe.com/tutorials/aspnet/100f610c-3417-4be5-a21c-2025234b4e01/silverlight-line-of-busin.aspx
H?ctor Miguel wrote:
hola, Jorge !
01-nov-09
hola, Jorge !
prueba con una macro +/- como la siguiente:
Sub mi_Busqueda()
On Error GoTo NoExiste
With Worksheets("hoja2").Columns("b")
With .Cells.Find(InputBox("Introduce el dato a buscar"))
.Parent.Activate
.Select
End With
End With
Exit Sub
NoExiste:
MsgBox "El dato solicitado no existe !!!"
End Sub
saludos,
hector.
__ previos __
Previous Posts In This Thread:
EggHeadCafe - Software Developer Portal of Choice
ASP.NET Request Logger and Crawler Killer
http://www.eggheadcafe.com/tutorials/aspnet/a988f8c3-f69e-4ad2-a2e9-f9e01867769c/aspnet-request-logger-an.aspx
> en ese codigo como le hago para que me imprima el valor de la celda en donde encontro eso
> osea que mande a una caja de texto el valor k tiene la celda seleccionada
cambia esta parte:
.Parent.Activate
.Select
por esta otra:
<aqui tu caja de texto> = .Value
(dependiendo de "que" sea y donde este tu caja de texto ???)
saludos,
hector.
__ OP __
"Héctor Miguel" escribió:
> .
>
> ... estoy trabajando en Estado.xls y a cada rato alguien llega a preguntar en que fecha se incluyo el rol xxx en el estado.
> Eso me obliga a cambiarme de hoja para realizar la busqueda, encontrarla, cerrarla, etc...
copia/pega (o escribe) la siguiente macro en el mismo modulo donde esta la macro anterior
(la ejecutas cada vez que te pregunten por algun "rol" desde cualquiera de las hojas -Estado p.e.-)
Sub Busca_Fecha_Rol()
Dim Rol As Integer, Fila As Integer, Msj As String
Rol = CInt(Trim(InputBox("Ingresa el Rol a buscar...")))
If Rol = 0 Then Exit Sub Else On Error GoTo NoExiste
Msj = "El Rol Buscado: " & Rol
With Worksheets("historico")
Fila = .Columns("b").Cells.Find(Rol).Row
MsgBox Msj & " fue registrado el: " & Format(.Range("a" & Fila), "dd-mmm-yy")
End With
Exit Sub
NoExiste:
MsgBox Msj & " No existe !!!"
End Sub
saludos,
hector.