Acerca del metodo Find

22/04/2004 - 23:52 por Henry Sanchez | Informe spam
Hola grupo,
Siempre utilizo el metodo Find para encontrar la celda
que contiene un valor en particular dentro de un rango de
celdas y siempre me habia funcionado bien, hasta ahora.

Si el valor que estoy buscando es un texto largo, unos
200 caracteres, me encuentro con que el metodo no
encuentra la celda que contiene esta informacion y genera
un error "diferentes tipos de datos"

Cuando el valor de busqueda es corto, el metodo funciona
bien, por eso me doy cuenta que el problema no es de
sintaxis.

Alguien sabe si el metodo Find tiene algunas limitantes
respecto al tamaño de la cadena de caracteres a buscar?
(La ayuda de Excel maneja este tema de una manera
bastante superficial)

Saludos,

Henry

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
23/04/2004 - 05:04 | Informe spam
hola, Henry !

... Find para encontrar la celda que contiene un valor en particular ... habia funcionado ... hasta ahora.
... buscando ... unos 200 caracteres ... no encuentra la celda ... y genera un error "diferentes tipos de datos"
... Find tiene algunas limitantes respecto al tamaño de la cadena de caracteres a buscar?
(La ayuda de Excel maneja este tema de una manera bastante superficial)



probablemente no sea 'que' ... sino 'como' [construyes el 'que' y ... le indicas que 'lo busque']
[quizas 'combinado' con 'criterios y opciones' del metodo???]
¿transcribes la/s parte/s de la falla?

saludos,
hector.
Respuesta Responder a este mensaje
#2 Henry Sanchez
23/04/2004 - 21:07 | Informe spam
Gracias por tu interes Hector
La situacion es mas o menos la siguiente:

Tengo una celda con validacion tipo lista para que el
usuario seleccione una entrada de la lista, con lo cual se
genera el evento change de la hoja de trabajo.

Utilizo la siguiente instrccion:
intActividad = rgoActividades.Find(What:=Target.value,
lookin:=xlvalues, lookat:=xlwhole).item(1,2).value)

Con lo cual obtengo el codigo asociado a la seleccion del
usuario (El codigo esta a la derecha de las descripciones
del rango origen de la validacion: rgoActividades)

La variable intActividad esta dedeclarada como entera y
los codigos son enteros entre 1 y 1000 proximadamente).

La idea de todo este asunto es que el usuario indique la
descripcion de una actividad dentro de un grupo ded
actividades mediante una validacion tipo lista y la
instruccion me devulva el codigo asociado a esa
descripcion (que se encuentra a la derecha).

He tenido que recurrir al siguiente codigo para lograr un
funcionamiento sin errores aunque no sea el mas optimo:

For intContador=1 to rgoActividades.rows.count
if target.Value=rgoActividades.item(intcontador,1).Value
then
IntActividad=rgoActividades.item(intcontador,2).Value
Exit For
End If
Next intContador

Con esto funciona sin errores, pero no es lo mas apropiado

Nuevamente gracias por tu interes Hector

Saludos,

Henry


hola, Henry !

... Find para encontrar la celda que contiene un valor




en particular ... habia funcionado ... hasta ahora.
... buscando ... unos 200 caracteres ... no encuentra




la celda ... y genera un error "diferentes tipos de datos"
... Find tiene algunas limitantes respecto al tamaño de




la cadena de caracteres a buscar?
(La ayuda de Excel maneja este tema de una manera




bastante superficial)

probablemente no sea 'que' ... sino 'como' [construyes


el 'que' y ... le indicas que 'lo busque']
[quizas 'combinado' con 'criterios y opciones' del


metodo???]
¿transcribes la/s parte/s de la falla?

saludos,
hector.

.

Respuesta Responder a este mensaje
#3 Héctor Miguel
25/04/2004 - 06:06 | Informe spam
hola, Henry !

... celda con validacion tipo lista ... genera el evento change de la hoja de trabajo.
... obtengo el codigo asociado ... a la derecha de las descripciones del ... origen de la validacion: rgoActividades)
Utilizo ... intActividad = rgoActividades.Find(What:=Target.value, lookin:=xlvalues, lookat:=xlwhole).item(1,2).value)
... intActividad esta declarada como entera y los codigos son enteros entre 1 y 1000 proximadamente) [...]



1.- si la validacion 'proviene' de un rango [en teoria] NO debiera haber 'problemas' para 'localizar' la seleccion ;)
2.- no se si [realmente] sea 'necesario' elaborar [tantas] lineas de codigo si podrias 'obtener' la asociacion de la seleccion...
a) con un [simple] BuscarV [o una combinacion de Indice y Coincidir] en la misma hoja de calculo [sin codigo]
b) usando [por codigo] tales funciones de hoja de calculo [solo unas cuantas lineas]
3.- no 'veo' donde [y porque] 'asoma' el problema con los textos 'largos' [de tu consulta original] ;)
4.- he probado las pro
Respuesta Responder a este mensaje
#4 Héctor Miguel
25/04/2004 - 06:17 | Informe spam
=> perdon... el correo anterior 'se me fue de control'... :((<= [no me acabo de acostumbrar al teclado 'notebook']

hola, Henry !

... celda con validacion tipo lista ... genera el evento change de la hoja de trabajo.
... obtengo el codigo asociado ... a la derecha de las descripciones del ... origen de la validacion: rgoActividades)
Utilizo ... intActividad = rgoActividades.Find(What:=Target.value, lookin:=xlvalues, lookat:=xlwhole).item(1,2).value)
... intActividad esta declarada como entera y los codigos son enteros entre 1 y 1000 proximadamente) [...]



1.- si la validacion 'proviene' de un rango [en teoria] NO debiera haber 'problemas' para 'localizar' la seleccion ;)
2.- no se si [realmente] sea 'necesario' elaborar [tantas] lineas de codigo si podrias 'obtener' la asociacion de la seleccion...
a) con un [simple] BuscarV [o una combinacion de Indice y Coincidir] en la misma hoja de calculo [sin codigo]
b) usando [por codigo] tales funciones de hoja de calculo [solo unas cuantas lineas]
3.- no 'veo' donde [y porque] 'asoma' el problema con los textos 'largos' [de tu consulta original] ;)
4.- he probado las propuestas y no he logrado 'reproducir' el error que comentas.
=> estos son los 'supuestos':
- un rango con textos [cortos y largos -mas de 200 carcteres-] en 'b1:b4'
- al lado derecho ['c1:c4'] de las descripciones... un codigo =>la funcion =Largo(b1)<- una celda ['c8'] con validacion [tipo lista] 'tomada' del rango 'b1:b4'
- en otra celda [cualquiera]... la formula: =Indice(c1:c4,Coincidir(c8,b1:b4,0))
- en el evento '_change' de la hoja:
___ usando las [mismas] funciones de hoja de calculo ___
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$C$8" Then Exit Sub
With Application
MsgBox .Index(Me.Range("c1:c4"), .Match(Target, Me.Range("b1:b4"), 0))
End With
End Sub
___ usando el 'esquema' que planteas en esta consulta ___
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$C$8" Then Exit Sub
Dim intActividad As Integer, rgoActividades As Range
Set rgoActividades = Me.Range("b1:c4")
intActividad = rgoActividades.Find(What:=Target, LookIn:=xlValues, LookAt:=xlWhole).Item(1, 2)
Target.Offset(1, -1) = intActividad
End Sub

=> todas 'sin problemas' :)) <¿comentas datos adicionales?
saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida