Forums Últimos mensajes - Powered by IBM
 

Como evitar un salto a una Macro cuando no se desea

01/02/2005 - 22:59 por Ivan | Informe spam
Hola a todos:
En una hoja de calculo tengo una macro para cambiar los numeros a texto,
la cual funciona perfectamente, sin embargo estoy desarrollando otra en la
cual tengo que incertar una columna, al hacer esto, me llama en forma
automatica a la macro que convierte los numeros a letras, como la hoja es
bastante grande, tarda bastante tiempo en salir de esta rutina y seguir el
procedimiento normal

Como podria ecitar que esta macro se llame ( o salte hacia ella ) en forma
automatica ?

Agradesco de antemano su sugerencia

La macro a la cual salta inicia de la siguiente manera:

Function letras(cantm As Variant, ByVal mon As Integer) As String
Dim cants1 As String, num1 As Variant, num2 As Variant

num1 = cantm \ 1000000
num2 = cantm - (num1 * 1000000)

cents = (num2 * 100) Mod 100
If cents = 0 Then
cents1 = "00"
Else
cents1 = Format(cents)
End If
cantm = cantm - (cents / 100)
If cantm >= 1000000 Then
etc, etc
y no entiendo por que salta hacia esta macro.
 

Leer las respuestas

#1 Héctor Miguel
02/02/2005 - 04:14 | Informe spam
hola, Ivan !

... macro para cambiar los numeros a texto... funciona perfectamente
... desarrollando otra... insertar una columna... me llama en forma automatica... numeros a letras
... la hoja... tarda bastante tiempo en salir de esta rutina y seguir el procedimiento normal [...]



por lo que 'veo'... tienes celdas con llamadas a la funcion de numeros a letras...
en cantidad 'suficiente' como para que se vuelva lento un recalculo 'general' del modelo :((
las [primeras] alternativas que se me ocurren son...
=1.- en la macro donde insertas columnas...
pon como primera linea: ->Application.Calculation = xlCalculationManual<-
al finalizar [ultima linea]: ->Application.Calculation = xlCalculationAutomatic<-
=2.- modifica en el codigo de la funcion, la 'forma' en que 'recibe' al primer argumento, es decir cambia...
de: -> Function letras(cantm As Variant...etc.
a: -> Function letras(ByVal cantm As Variant...etc.
y... agrega ->como primera instruccion<- en el codigo de la funcion un...
-> Application.Volatile False <-
=> con esta 'combinacion' la funcion no se vera 'afectada' al insertar columnas, pero SI al eliminarlas.

saludos,
hector.

Preguntas similares