domingo, 5 de mayo de 2013

Excel: macro con argumentos



Estamos haciendo un sistema con macros que se llaman unas a otras. Cuando una macro le pasa un argumento, funciona bien. Pero cuando tratamos de pasar dos o más argumentos, nos muestra un mensaje de error. ¿Qué sintaxis debemos usar en ese caso?


Una macro puede procesar datos procedentes de otra. Por ejemplo, en el siguiente par, la pri­mera macro “le pasa” un valor a la segunda, que lo duplica y muestra el resultado:
Sub principal()
x = [A1]
doble (x)
End Sub
Sub doble(a)
b = 2 * a
MsgBox (“El doble de “ & a & “ es “ & b)
End Sub
La forma “natural” de pasar el valor por dupli­car es poniéndolo entre los paréntesis de la primera macro. En la segunda macro, la varia­ble que está entre paréntesis recibe el valor que le pasó la otra.
Como sugiere la pregunta, esto no funciona con dos o más argumentos. Si, dentro de una macro, invocamos otra con dos argumentos (por ejemplo, Suma(x, y)), obtenemos un mensaje de error.
Hay distintas soluciones, pero la más simple es invocar la segunda macro con la instrucción Call:
Sub principal()
x = [A1]
y = [A2]
Call suma(x, y)
End Sub
Sub suma(a, b)
c = a + b
MsgBox (“La suma es “ & c)
End Sub
Existen otras soluciones, pero esta funciona.
La primera macro le pasa un valor a la segunda, que calcula el doble y muestra el resultado.
Cuando queremos que una macro le pase dos argumentos a otra aparecen los problemas.
Para llamar a una macro, pasándole dos argumentos, hay que usar la instrucción Call.

No hay comentarios:

Publicar un comentario

Deja todo lo que quieras decirnos, somos mentes abiertas y leemos de todo y para todos, pero por favor no insultes, no agredas, no seas pornografico, eso no nos gusta y te vamos a mandar bien lejos.