我正在编写一个宏,可以在Excel表格中保存变量(利润)的价值,适用于多种情况(通过更改价格和折扣)。为了开始,我有一个贯穿每个场景的宏,并将变量的值设置为在该场景中计算的利润。但是,当我运行宏时 - 我的三个变量A1 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
答案 0 :(得分:1)
您必须声明Double
类型的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
,而您的代码将其声明为Variant
类型(从而使它们能够存储每个类型),然后使用use {{1}存储Range
对象}}关键字,该范围始终指向在每次计算时更改的同一单元格
答案 1 :(得分:0)
你正在写作范围。将A1,A2和A3的单元格更改为其他一些单元格值。所有3个都指的是相同的细胞