Nueva consulta acerca de Set

Hola Matador... Nuevamente te molesto con una consulta. Estuve probando lo que me has dicho y resultó ser que no logro dar con el clavo acerca de cómo declarar la variable para utilizar lo que me recomendaste en la pregunta anterior:
Si busco: "Selection.Find(What:=Nombre, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Select"
Me recomendaste guardar esta búsqueda dentro de una variable. Ejemplo:
Set Respuesta = Selection.Find(What:=Nombre, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Select
Pero cuando trato de declarar la Variable Respuesta me saltan algunos errores diciendo que no son compatibles los tipos. Te pregunto cómo debería de quedar la declaración de la variable para que funcione correctamente.
Desde ya muchas gracias y disculpa, soy principiante y no logro encontrar ayuda acerca de esto. ¿Tienes alguna buena página a la cual uno puede remitirse para consultar? ¡GRACIAS!

1 Respuesta

Respuesta
1
Usalo de esta forma a ver
Set resp = Cells.Find(What:=nombre, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
Hay un archivo llamado factura en mi skydrive donde uso el set
https://skydrive.live.com/?cid=e5f28d555f68f3cc#cid=E5F28D555F68F3CC&id=E5F28D555F68F3CC%21169
Hola nuevamente! Hasta ahora no encontré la forma. Intenté por dos caminos, hice algo similar al código que está en tu skydrive; como también intenté hacerlo por cuenta propia y por ambos caminos da el siguiente error: "Se ha producido el error "91":en tiempo de ejecución: Variable de objeto o bloque with no establecido"
Te pregunto: ¿Está mal lo que estoy intentando? La idea es buscar la palabra deseda, cuando la encuentre, que se sitúe en la celda de abajo, si la celda en cuestión contiene la misma palabra buscada, que siga repitiendo esta acción (bajar, y evaluar esa celda en busca de la palabra) hasta que la celda no contenga la búsqueda. ¿Está bien la forma en que creo el código o hay alguna otra forme menos complicada?
Desde ya muchas gracias por tomarte el tiempo de aclarar las dudas.
¡Éxitos!
el set funciona perfecto en el archivo
Si quieres eso debes colocar un ciclo, por ejemplo con while
Despues de resp. Activate ( O select)
Deberias colocar algo como
do while activecell=resp
activecell.offset(1,0).select
Loop
Eso hace lo que quieres
Hola nuevamente Matador.
Lo que no me queda claro es cómo poder establecer la relación entre el bucle IF y el nombre que busco. Es decir, declaro la propiedad como objeto de la siguiente manera:
Set Buscar = activesheet.range("b:b")
Respuesta = buscar.find(nombre, Y DEMÁS cosas de la sitaxis).activate
'lo que yo requiero es que de encontrarse la palabra buscada, la celda activa se coloque una fila debajo
if respuesta=nombre then
activecell.offset(1,0).activate
else
msgbox("No no se encontró ninguna búsqueda")
end if
Como podrás imaginarte, encuentra un error en la linea que pertenece a "if respuesta = nombre then". Sé que estoy haciendo las cosas mal, pero no entiendo y tampoco me doy cuenta cómo poder guardar la búsqueda FIND en una variable y después con ella poder decir "si la celda contiene el nombre ENTONCES... " Espero haber sido algo claro. Por lo demás sé que hay errores en la forma en que lo encaro, pero lo hice de memoria, porque no tengo a mano el Código de la macro, pero básicamente era algo similar.
¿Revisaste bien el archivo factura? Allí hay una instrucción
if resp is nothing then
que quiere decir eso? que si la busqueda es vacia puedes colocar
msgbox("No no se encontró ninguna búsqueda")
else
Resp. ¿Activate qué hace esta linea? Selecciona la celda que corresponde con tu búsqueda
Y que hace el activecell. offset(1,0). Activate se "para" en la linea de abajo.
Revisa bien el código, esto no es complicado.
Sigo a la orden por cualquier duda
¡Muchas gracias matador!... no me daba cuenta, pero utilizaba el set de la siguiente manera:
set resp = range("B:b").Find(What:=Nombre, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Select
Y se ve que el error estaba en el final, en el ".select"... ¡Claro!, la selección de la celda no se debía de guardar en la variable set.
¡Genio total! Y muchas gracias por el aguante y tu buena predisposición.
Abrazo

Añade tu respuesta

Haz clic para o