我是一个编码的初学者,我遇到的问题是过程太大。我读到可以通过将代码分成较小的模块来解决此问题。但是我想知道,当您在模块内部调用变量进行修改时,是否可以考虑模块外部定义的变量的值。另外,在修改之后,您可以在模块外部和另一个模块中使用新值吗?有人可以解释一下在这种情况下VBA是如何工作的吗?非常感谢。
我阅读了您给我的答案,但是虽然我理解这个概念,但是没有适合我的案例。我会很感激一个例子,这样我才能完全理解如何解决我的问题。我所拥有的基本上是:
sub simulador()
Sheets(2).Activate
With ActiveSheet
a=1
b=1
c=1
for t=2 to 20
procedure using and modifying variables a and c
b=cells(t,15)
for a=2 to 20
code using variable b
next a
d=3
j=9
procedure using the variables a b and j
for ga=2 to 20
code using variable d
next ga
next t
end with
end sub
我需要做的是创建一个sub1白色:
procedure using and modifying variables a and c
b=cells(t,15)
2级以下的白色:
for a=2 to 20
code using and modifying variable b
next a
3级以下:
procedures using the variables a b and j
for ga=2 to 20
code using variable d
next ga
所以最后就像:
sub simulador()
Sheets(2).Activate
With ActiveSheet
a=1
b=1
c=1
for t=2 to 20
Call sub 1
Call sub 2
d=3
j=9
Call sub 3
next t
end with
end sub
在所有情况下,我都想调用传递变量Byref的子例程,因此一旦对其进行修改,就保持修改状态,以便另一个子例程可以将它们与新值一起使用。当执行这些子例程中的过程时,活动工作表也应保持活动状态。我不知道一切如何正常工作。感谢您的帮助。
答案 0 :(得分:-1)
我没有时间花时间解释它的工作原理,因为这些是编程的基础知识,所以....在Google上搜索:
vb函数传递参数差byref和byval