Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Capturar resultado "nothing" en una macro

484 views
Skip to first unread message

Diego

unread,
Apr 16, 2008, 9:50:01 AM4/16/08
to
Señores.
En una parte de una macro realizo una busqueda de un valor de una celda.
Esa celda puede estar oculta en la hoja de cálculo, si eso ocurre, hay una
serie de comandos que no deben ejecutarse.
Cuando la celda esta oculta, el resultado de la busqueda es "nothing", pero
no encuentro la forma de capturar ese resultado y usarlo en la línea de
programación.
La línea del conflicto es la sgte:
"If Not IsEmpty(Worksheets("REPORTE").Cells.Find(What:="Datos por Cliente",
LookAt:=xlWhole)) Then"


Diego

unread,
Apr 16, 2008, 11:11:01 AM4/16/08
to
El mensaje de error que arroja es:
"Se ha producido el error '91' en tiempo de ejecución:
Variable de objeto o bloque With no establecido"

Héctor Miguel

unread,
Apr 16, 2008, 3:57:43 PM4/16/08
to
hola, Diego !

> En una parte de una macro realizo una busqueda de un valor de una celda.

> Esa celda puede estar oculta en la hoja de calculo, si eso ocurre, hay una serie de comandos que no deben ejecutarse.


> Cuando la celda esta oculta, el resultado de la busqueda es "nothing"

> pero no encuentro la forma de capturar ese resultado y usarlo en la linea de programacion.
> La linea del conflicto es la sgte:


> "If Not IsEmpty(Worksheets("REPORTE").Cells.Find(What:="Datos por Cliente", LookAt:=xlWhole)) Then"

>> El mensaje de error que arroja es:
>> "Se ha producido el error '91' en tiempo de ejecucion: Variable de objeto o bloque With no establecido"

1) (hasta donde se) no importa si alguna celda (o incluso su hoja) esta oculta...
para que por codigo puedas administrar sus propiedades, metodos, etc.

2) si el mensaje de error (91) por "variable de objeto o bloque with no establecido"
pudiera tener dos (posibles) causas del error (segun la linea de codigo que expones):

a) la funcion vba IsEmpty(...) <= REQUIERE que la referencia sea de tipo objeto y que previamente se haya establecido
-> p.e. Set MiCelda = Worksheets("reporte").Cells.Find(What:="datos por cliente", LookAt:=xlWhole)
para que puedas usarla en la forma de: If Not IsEmpty(MiCelda) Then ........
y obviamente, podria ser necesario un control de errores ANTES de la instruccion Set... (por si las dudas) :))

b) la otra posibilidad es que NO exista el dato buscado ("datos por cliente") por no coincidir caracteres (algun espacio de mas ?)

3) alternativas ?... prueba modificando esa linea por dos (o tres) distintas +/- como sigue:

On Error Resume Next
If Worksheets("reporte").Cells.Find(What:="datos por cliente", LookAt:=xlWhole) Is Nothing Then
MsgBox "El dato por el que se pregunta NO EXISTE !!!"
End If
On Error Goto 0

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.


Diego

unread,
Apr 16, 2008, 4:10:01 PM4/16/08
to
Gracias Hector.
En realidad necesitaba saber como comparar el valor.

Como cultura general, yo tenia el mismo supuesto que tu, sobre que los busca
inclusive en celdas ocultas, pero al realizar la busqueda con celdas ocultas
el resultado que arroja es "nothing", es decir, no encuentra nada, y cuando
la fila se muestra, encuentra el valor.

Gracias nuevamente.

Héctor Miguel

unread,
Apr 16, 2008, 4:46:26 PM4/16/08
to
hola, Diego !

> Como cultura general, yo tenia el mismo supuesto que tu, sobre que los busca inclusive en celdas ocultas

> pero al realizar la busqueda con celdas ocultas el resultado que arroja es "nothing", es decir, no encuentra nada

> y cuando la fila se muestra, encuentra el valor...

(pues)... "mi" supuesto lo comprobe antes de emitir la propuesta ;)

en que version de excel te sucede que no lo encuentra ?
(y cual es la instruccion precisa ?)

saludos,
hector.


0 new messages