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
 

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



Preguntas similares