Problemas con WorksheetFunction.HLookup

25/01/2005 - 19:10 por DF | Informe spam
Hola

Tengo una funcion personalizada en un modulo de excel.

Public Function DameValor(ByVal Codigo As String) As Double
VameValor = Application.WorksheetFunction.VLookup(Codigo,
ThisWorkbook.Worksheets("SOURCE").Range("C4:D11"), 2, falso)
End Function

la cual es identico a a utilizar en una celda la formula
=Buscarv(Codigo;el rango("C4:D11");Columna (2); Falso)

Si los datos que que estan en la hoja SOURCE, se actualizan, en el recalculo
el segundo metodo actualiza sin problema los valores. es decir, funciona
perfectamente.

Pero en el caso de utulizar la funcion VBA, los valores se quedan estaticos,
es decir, asume
lo valores iniciales cuando se edito la celda.

Si entro en el modulo para realizar alguna modificacion a la funcion,
(inserto un espacio y lo borro)
la siguiente actualizacion de los datos se realiza sin problema, por unica
vez, luego los datos
quedan desfazados entre la funcion Buscarv() y la funcion personalizada
Damevalor()

LA GRAN CONSULTA
¿como hacer para que se refresquen los datos de mi funcion personalizada.?

Saludos y de antemano muchas gracias.
Dick Fernández

Preguntas similare

Leer las respuestas

#1 Benito Merino
25/01/2005 - 21:23 | Informe spam
Hola DF.

En la ventana de proyecto, en microsoft excel objetos, en el correspondiente
a la hoja "RESOURCE", pega el siguiente código:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.Volatile
End Sub

Cuando haya una modificación en la hoja "RESOURCE" recalculará las fórmulas.

Saludos,


Benito
Barcelona




"DF" escribió:

Hola

Tengo una funcion personalizada en un modulo de excel.

Public Function DameValor(ByVal Codigo As String) As Double
VameValor = Application.WorksheetFunction.VLookup(Codigo,
ThisWorkbook.Worksheets("SOURCE").Range("C4:D11"), 2, falso)
End Function

la cual es identico a a utilizar en una celda la formula
=Buscarv(Codigo;el rango("C4:D11");Columna (2); Falso)

Si los datos que que estan en la hoja SOURCE, se actualizan, en el recalculo
el segundo metodo actualiza sin problema los valores. es decir, funciona
perfectamente.

Pero en el caso de utulizar la funcion VBA, los valores se quedan estaticos,
es decir, asume
lo valores iniciales cuando se edito la celda.

Si entro en el modulo para realizar alguna modificacion a la funcion,
(inserto un espacio y lo borro)
la siguiente actualizacion de los datos se realiza sin problema, por unica
vez, luego los datos
quedan desfazados entre la funcion Buscarv() y la funcion personalizada
Damevalor()

LA GRAN CONSULTA
¿como hacer para que se refresquen los datos de mi funcion personalizada.?

Saludos y de antemano muchas gracias.
Dick Fernández



Respuesta Responder a este mensaje
#2 DF
26/01/2005 - 05:19 | Informe spam
"Benito Merino" escribió en el mensaje
news:
Hola DF.

En la ventana de proyecto, en microsoft excel objetos, en el
correspondiente
a la hoja "RESOURCE", pega el siguiente código:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.Volatile
End Sub



Hice lo anterior.

pero el problema continua igual.

Si se puede postear un binarios, te puedo enviar un ejemplo.

De todas maneras te explico lo que necesito.

Estoy trabajando con excel 2003 SP1
Menu: datos -> obtener datos externos -> Nueva consulta web
incorpora una tabla de alguna pagina en donde los datos vayan variando, como
por ejemplo la hora.

Luego desde una macro en excel, genera la funcion buscardato, en donde se
utilize el hlookup
y llama la funcion desde alguna celda

Asimismo, coloca en otra celda la formula tipica del BuscarV, que apunte al
mismo dato que va cambiando.

veras que a pesar de los recalculos, el valor de nuestra funcion no varia,
pero si lo hace la llamada directa del =BuscarV()

Me parece un error, bastante extraño, he revisado bastante documentación y
aun no encuentro la solución.

Muchas gracias por tu interes en ayudarme.

Saludos
Dick Fernández
Santiago - Chile
Respuesta Responder a este mensaje
#3 Fernando Arroyo
26/01/2005 - 09:16 | Informe spam
A mí el siguiente código sí parece que me funciona:

Public Function LeerDato(ByVal Codigo As String) As Double
Application.Volatile
LeerDato = WorksheetFunction.VLookup(Codigo, ThisWorkbook.Worksheets("DATOS").Range("A1:B4"), 2, False)
End Function

Un saludo.


Fernando Arroyo
MS MVP - Excel



"DF" <dfernandez @ valymon.cl> escribió en el mensaje news:%
Hola nuevamente, el problema me sigue esquivando, le envio un modelo
simple del problema.

No se si estan permitidos los adjunto, pero me arriesgare por esta vez,
esta libre de virus asi que no os preocupeis. Chequeado con el norton.

Contiene una simple macro que utiliza la funcion WorkshettFunction.VLookup

Para ver el problema solo basta modificar cualquier valor de la colummna B
cambio que se vera reflejado en la Columna "D"
pero no en la columna "E" que si debiera.

La hoja ya tiene incorporada la funcion que me indicaste.

Los datos se obtienen desde internet y bases de datos, y estaran dentro un
archivo XLA
esto implica que el usuario final accede a los datos solo con la funcion
Leerdato().

Soluciones o sugerencias son bienvenidos ya que este problema me tiene de
cabeza.

Saludos
Dick Fernandez
Santiago - Chile



Respuesta Responder a este mensaje
#4 DF
27/01/2005 - 01:45 | Informe spam
Fernando

Muchas gracias, es justo lo que necesitaba.

Public Function LeerDato(ByVal Codigo As String) As Double
Application.Volatile
LeerDato = WorksheetFunction.VLookup(Codigo,
ThisWorkbook.Worksheets("DATOS").Range("A1:B4"), 2, False)
End Function

Un saludo.


Fernando Arroyo
MS MVP - Excel


Saludos
Dick Fernández
Santiago - Chile
Respuesta Responder a este mensaje
#5 DF
28/01/2005 - 03:04 | Informe spam
"Fernando Arroyo" escribió en el mensaje
news:
A mí el siguiente código sí parece que me funciona:

Public Function LeerDato(ByVal Codigo As String) As Double
Application.Volatile
LeerDato = WorksheetFunction.VLookup(Codigo,
ThisWorkbook.Worksheets("DATOS").Range("A1:B4"), 2, False)
End Function

Un saludo.


Fernando Arroyo
MS MVP - Excel


Muchas gracias por la respuesta, pero solo funciona con archivos XLS, si lo
convierto a XLA los datos no se refrescan y continuan estaticos. Agrego un
nuevo post al foro Actualización de datos en un complemento Excel *.XLA
Saludos
Dick Fernandez
Santiago - Chile
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida