Código de búsqueda de texto desde un UserForm cuando el contenido de la celda es una referencia a otra celda

05/06/2007 - 23:27 por Insumos | Informe spam
Hola Gente del Foro:

Espero que todos esten bien. Tengo una duda con el comportamiento del
siguiente código:

Dim Nombre as String
Dim columna As Integer

Nombre = ComboBox4
columna = Worksheets("Datos").Range("D6:W6").Find(Nombre).Column

El código lo que hace es identificar en que columna se encuentra lo que se
haya seleccionado en el ComboBox4, el cual tiene una lista de sucursales que
toma al inicializarse el UserForm desde una hoja llamada "Parámetros". Por
ejemplo:

Buenos Aires
Mar del Plata
Córdoba
...

Ahora, en la hoja "Datos" (que es dónde el código busca lo seleccionado en
el ComboBox4) los nombres se encuentran como títulos de columnas, por
ejemplo, de la siguiente manera:
Fila 6 Columna D Columna E Columna F ...
Fila 6 Buenos Aires Mar del Plata Córdoba ...

En la hoja "Datos", en realidad lo que está en la celda D6 es la fórmula que
hace referencia al nombre de la sucursal en la hoja "Parámetros", que es:
=Parámetros!C25. Y así en todos los títulos de la hoja "Datos" de la D a la
W.

Ahora el código que menciono al principio no funciona así como están las
cosas, ya que si selecciono en el ComboBox4, por ejemplo, "Buenos Aires", no
puede encontrarlo en el rango indicado, cuando claramente en D6 dice "Buenos
Aires". Ahora, lo curioso es que el código SI FUNCIONA si el contenido de la
celda D6 en lugar de ser =Parámetros!C25 es el texto "Buenos Aires".

Hay alguna manera de solucionar esto??? Ya que es muy incómodo tener que
reemplazar las celdas referenciadas a los Parámetros por textos lisos y
llanos sólo para que el código lo pueda identificar.
Desde ya muchas gracias y saludos!

Mariano

CONTADURIA

Preguntas similare

Leer las respuestas

#1 Ivan
06/06/2007 - 01:06 | Informe spam
On 5 jun, 23:27, "Insumos" wrote:
Hola Gente del Foro:

Espero que todos esten bien. Tengo una duda con el comportamiento del
siguiente código:

Dim Nombre as String
Dim columna As Integer

Nombre = ComboBox4
columna = Worksheets("Datos").Range("D6:W6").Find(Nombre).Column

El código lo que hace es identificar en que columna se encuentra lo que se
haya seleccionado en el ComboBox4, el cual tiene una lista de sucursales que
toma al inicializarse el UserForm desde una hoja llamada "Parámetros". Por
ejemplo:

Buenos Aires
Mar del Plata
Córdoba
...

Ahora, en la hoja "Datos" (que es dónde el código busca lo seleccionado en
el ComboBox4) los nombres se encuentran como títulos de columnas, por
ejemplo, de la siguiente manera:
Fila 6 Columna D Columna E Columna F ...
Fila 6 Buenos Aires Mar del Plata Córdoba ...

En la hoja "Datos", en realidad lo que está en la celda D6 es la fórmula que
hace referencia al nombre de la sucursal en la hoja "Parámetros", que es:
=Parámetros!C25. Y así en todos los títulos de la hoja "Datos" de la D a la
W.

Ahora el código que menciono al principio no funciona así como están las
cosas, ya que si selecciono en el ComboBox4, por ejemplo, "Buenos Aires", no
puede encontrarlo en el rango indicado, cuando claramente en D6 dice "Buenos
Aires". Ahora, lo curioso es que el código SI FUNCIONA si el contenido de la
celda D6 en lugar de ser =Parámetros!C25 es el texto "Buenos Aires".

Hay alguna manera de solucionar esto??? Ya que es muy incómodo tener que
reemplazar las celdas referenciadas a los Parámetros por textos lisos y
llanos sólo para que el código lo pueda identificar.
Desde ya muchas gracias y saludos!

Mariano

CONTADURIA




hola Mariano

no estoy seguro, pero prueba esta modificacion

esto->

columna = Worksheets("Datos").Range("D6:W6").Find(Nombre).Column



cambialo por esto->

columna = Worksheets("Datos").Range("D6:W6").Find(Nombre,,xlFormulas).Column




a ver si hay suerte

un saludo
Ivan


columna = Worksheets("Datos").Range("D6:W6").Find(Nombre).Column

Respuesta Responder a este mensaje
#2 Ivan
06/06/2007 - 02:17 | Informe spam
hola de nuevo, Mariano

disculpame pero antes creo que me he equivocado totalmente. Creo que
debes usar 'xlValues' en vez de 'xlFormulas'. de hecho, por lo que
creo entender de la ayuda (F1) hay varios parametros de Find que si no
se especifican cada vez que se invoca el metodo toman el ultimo usado
(aunque sea en el cuadro buscar de la hoja) y de hecho si lo
especificas, lo modificas tambien para la siguiente vez. Supongo que
lo tenias en Formulas y por lo que se ve hay que buscar por valores.

tampoco esta de mas que expecifiques si quieres buscar por
coincidencia completa o no

te pongo la prueba que he hecho y que parece funcionar

Sub buscarDato()
Dim c As Range, dato
dato = "casa12"
Set c = Hoja3.[a1].CurrentRegion.Find(dato, , xlValues, xlWhole)
If Not c Is Nothing Then
MsgBox c.Address(0, 0): Set c = Nothing
End If
End Sub

a mi por lo menos, ahora si parece funcionarme

un saludo y disculpa el error
Ivan
Respuesta Responder a este mensaje
#3 Insumos
06/06/2007 - 20:23 | Informe spam
Hola Iván:

Tu segunda solución era la indicada! Ahora mi código funciona perfectamente!
Una vez más te estoy muy agradecido.
Muchas Gracias!! Saludos!!

Mariano

"Ivan" escribió en el mensaje
news:

hola de nuevo, Mariano

disculpame pero antes creo que me he equivocado totalmente. Creo que
debes usar 'xlValues' en vez de 'xlFormulas'. de hecho, por lo que
creo entender de la ayuda (F1) hay varios parametros de Find que si no
se especifican cada vez que se invoca el metodo toman el ultimo usado
(aunque sea en el cuadro buscar de la hoja) y de hecho si lo
especificas, lo modificas tambien para la siguiente vez. Supongo que
lo tenias en Formulas y por lo que se ve hay que buscar por valores.

tampoco esta de mas que expecifiques si quieres buscar por
coincidencia completa o no

te pongo la prueba que he hecho y que parece funcionar

Sub buscarDato()
Dim c As Range, dato
dato = "casa12"
Set c = Hoja3.[a1].CurrentRegion.Find(dato, , xlValues, xlWhole)
If Not c Is Nothing Then
MsgBox c.Address(0, 0): Set c = Nothing
End If
End Sub

a mi por lo menos, ahora si parece funcionarme

un saludo y disculpa el error
Ivan

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida