Excelmacros会覆盖variables的值

我正在写一个macros,它可以将variables(利润)的值保存在Excel表格中,用于多个场景(通过更改价格和折扣)。 要开始,我有一个运行在每个场景中的macros,并将variables的值设置为该场景中计算的利润。 但是,当我运行macros – 我的三个variablesA1 A2和A3的所有似乎有最后一个和最后一个值。

我在做什么错了,我该如何解决这个问题?

Sub Macro1() ' ' Macro1 Macro ' ' With Sheets("Inputs") .Range("I72").Value = "Base" Dim A1 .Range("I5").Value = "Low" .Range("I91").Value = "Reduced 8%" Set A1 = Range("I174") Dim A2 .Range("I5").Value = "Low" .Range("I91").Value = "Reduced 4%" Set A2 = Range("I174") Dim A3 .Range("I5").Value = "Low" .Range("I91").Value = "Current" Set A3 = Range("I174") MsgBox A1 MsgBox A2 MsgBox A3 End With 

您必须从Doubletypes声明A1,A2和A3,并在其中存储单元格

 Option Explicit Sub Macro1() ' ' Macro1 Macro ' ' With Sheets("Inputs") .Range("I72").Value = "Base" Dim A1 As Double .Range("I5").Value = "Low" .Range("I91").Value = "Reduced 8%" A1 = Range("I174").Value Dim A2 As Double .Range("I5").Value = "Low" .Range("I91").Value = "Reduced 4%" A2 = Range("I174").Value Dim A3 As Double .Range("I5").Value = "Low" .Range("I91").Value = "Current" A3 = Range("I174").Value MsgBox A1 MsgBox A2 MsgBox A3 End With End Sub 

而你的代码将它们声明为Varianttypes(从而使它们能够存储每个types),然后使用Set关键字存储一个Range对象,并且该范围始终指向每次计算都改变的单元格

你正在写范围。 将A1,A2和A3的单元格更改为其他单元格值。 所有3个都指的是相同的单元格