FUNCION VOLATIL ??

27/06/2007 - 04:08 por Orfao | Informe spam
Function SGLOBAL1(A As Range, B As Range, C As Integer, D As Range)
Dim X As Integer
Dim Y As Integer
SGLOBAL1 = 0
X = A.Count
For Y = 0 To X - 1
If VBAProject.Hoja1.Cells(A.Row + Y, A.Column) <> "" Then
SGLOBAL1 = SGLOBAL1 +
Application.WorksheetFunction.VLookup(VBAProject.Hoja1.Cells(A.Row + Y,
A.Column), B, C, 0) * VBAProject.Hoja1.Cells(D.Row + Y, D.Column)
End If
Next
End Function
Function SGLOBAL2(A As Range, B As Range, C As Integer, D As Range, E As
Range)
Dim X As Integer
Dim Y As Integer
SGLOBAL2 = 0
X = A.Count
For Y = 0 To X - 1
If VBAProject.Hoja1.Cells(A.Row + Y, A.Column) <> "" Then
SGLOBAL2 = SGLOBAL2 +
Application.WorksheetFunction.VLookup(VBAProject.Hoja1.Cells(A.Row + Y,
A.Column), B, C, 0) * VBAProject.Hoja1.Cells(D.Row + Y, D.Column) *
VBAProject.Hoja1.Cells(E.Row + Y, E.Column)
End If
Next
End Function
Function SGLOBAL3(A As Range, B As Range, C As Integer, D As Range, E As
Range, F As Integer)
Dim X As Integer
Dim Y As Integer
SGLOBAL3 = 0
X = A.Count
For Y = 0 To X - 1
If VBAProject.Hoja1.Cells(A.Row + Y, A.Column) <> "" Then
SGLOBAL3 = SGLOBAL3 +
Application.WorksheetFunction.VLookup(VBAProject.Hoja1.Cells(A.Row + Y,
A.Column), B, C, 0) * VBAProject.Hoja1.Cells(D.Row + Y, D.Column) *
VBAProject.Hoja1.Cells(E.Row + Y, E.Column) *
Application.WorksheetFunction.VLookup(VBAProject.Hoja1.Cells(A.Row + Y,
A.Column), B, F, 0) / 100
End If
Next
End Function



Me alimento del conocimiento de todos
 

Leer las respuestas

#1 Orfao
27/06/2007 - 04:20 | Informe spam
Hola Grupo...
Tengo estas tres funciones definidas...
Como las modifico para que retornen el mismo resultado pero que dejen de ser
volatiles.
el problema es que cuando ejecuto el codigo paso a paso para verificar algun
cambio o valor de cualquier macro al modificar cualquier celda me cae en
estas funciones que se repiten cerca de en 300 filas y luego se vuelve a
"como que a recilar" y para salir debo darle a f5 con lo que pierdo lo que
deseo hacer..
O en otro caso como hago para que cuando la macro pase a estas funciones lo
haga sin interrupcion y luego al calcular o recalcular vuelva al paso a
paso???
Me alimento del conocimiento de todos


"Orfao" wrote:

Function SGLOBAL1(A As Range, B As Range, C As Integer, D As Range)
Dim X As Integer
Dim Y As Integer
SGLOBAL1 = 0
X = A.Count
For Y = 0 To X - 1
If VBAProject.Hoja1.Cells(A.Row + Y, A.Column) <> "" Then
SGLOBAL1 = SGLOBAL1 +
Application.WorksheetFunction.VLookup(VBAProject.Hoja1.Cells(A.Row + Y,
A.Column), B, C, 0) * VBAProject.Hoja1.Cells(D.Row + Y, D.Column)
End If
Next
End Function
Function SGLOBAL2(A As Range, B As Range, C As Integer, D As Range, E As
Range)
Dim X As Integer
Dim Y As Integer
SGLOBAL2 = 0
X = A.Count
For Y = 0 To X - 1
If VBAProject.Hoja1.Cells(A.Row + Y, A.Column) <> "" Then
SGLOBAL2 = SGLOBAL2 +
Application.WorksheetFunction.VLookup(VBAProject.Hoja1.Cells(A.Row + Y,
A.Column), B, C, 0) * VBAProject.Hoja1.Cells(D.Row + Y, D.Column) *
VBAProject.Hoja1.Cells(E.Row + Y, E.Column)
End If
Next
End Function
Function SGLOBAL3(A As Range, B As Range, C As Integer, D As Range, E As
Range, F As Integer)
Dim X As Integer
Dim Y As Integer
SGLOBAL3 = 0
X = A.Count
For Y = 0 To X - 1
If VBAProject.Hoja1.Cells(A.Row + Y, A.Column) <> "" Then
SGLOBAL3 = SGLOBAL3 +
Application.WorksheetFunction.VLookup(VBAProject.Hoja1.Cells(A.Row + Y,
A.Column), B, C, 0) * VBAProject.Hoja1.Cells(D.Row + Y, D.Column) *
VBAProject.Hoja1.Cells(E.Row + Y, E.Column) *
Application.WorksheetFunction.VLookup(VBAProject.Hoja1.Cells(A.Row + Y,
A.Column), B, F, 0) / 100
End If
Next
End Function



Me alimento del conocimiento de todos

Preguntas similares