将范围值存储在VBA对象中

我写了一个程序,它将存在于指定范围( A1:B2 )中的值乘以作为parameter passing的值(写入单元格D1的值)。

现在,如何才能再次运行一个不同的参数,将运行在原始值的macros? 我敢肯定,我需要一些全局variables,这将告诉我的过程,macros已经运行至less一次(我发现如何做到这一点),但我不知道如何/在哪里存储的原始值。

例如,我有

  Range("A1").Value = 1 Range("A2").Value = 1 Range("B1").Value = 1 Range("B2").Value = 1 Range("D1").Value = 2 

单击macrosbutton,获取Range("A1:B2")范围内的值,如下所示

  Range("A1").Value = 2 Range("A2").Value = 2 Range("B1").Value = 2 Range("B2").Value = 2 

现在,手动编辑Range("D1").Value23 ,再次单击macrosbutton,我希望我的过程返回以下值

  Range("A1").Value = 3 Range("A2").Value = 3 Range("B1").Value = 3 Range("B2").Value = 3 

简约程序可以是这样的结构

  dim rng as Range dim MyRange as Range set MyRange = Range("A1:B2") For each rng in MyRange rng.value = rng.value*Range("D1").Value next rng 

我希望这是一个很好的例子。 谢谢

弗朗切斯科

如果我理解的很好,你想要的是一种方法来跟踪你每次调用你的子button,并使用这个数据。

一种方法是在模块中创build一个公共variables(我通常在我的项目中创build一个variables模块),并使用button更新您调用的子数据。

 'Your public variable inside a module (VariablesModule) Public param() As Variant 'Your general code Call procedure(VariablesModule.param) 'Inside your sub Sub procedure(byVal paramVal as Variant) '(your code) ReDim param(0 To n) As Variant Set param(1) = ABCDEFG End sub 

第二种方法是简单地将这些数据存储在一个范围内,并在你的子文件中使用/更新。