excel 如何解释应用,计算

nfg76nw0  于 6个月前  发布在  其他
关注(0)|答案(1)|浏览(81)

我正在查看一些示例,偶然发现了下面的代码示例。我不完全理解这是做什么的,以及为什么它以这种方式实现。运行代码并没有向我解释这是如何影响宏或Excel计算的。这里的任何人都可以向我解释Application.Calculation属性是做什么的,以及下面的代码如何影响宏迭代中的Excel计算?

Sub example()

Dim CalculationMode As Integer
CalculationMode = Application.Calculation
Application.Calculation = xlCalculationManual

Do While 
  'Generic Do While statement
Loop

Application.Calculation = CalculationMode

End Sub

字符串

b4qexyjb

b4qexyjb1#

密码:
1.存储计算设置:CalculationMode = Application.Calculation
1.将计算转为手动:Application.Calculation = xlCalculationManual
1.迭代并做它的事情。
1.恢复原始计算设置。Application.Calculation = CalculationMode
下面是一个可测试的例子,说明公式在Application.Calculation = xlCalculationManual之后是否会更新:
在新的空白表格中,在单元格A1中输入公式=B1,在B1中输入数字5。
可测试代码:

Sub whatever()
    Dim i As Long
    i = 1
    
    Dim arr(1 To 3) As Long
    arr(1) = 1
    arr(2) = 2
    arr(3) = 3
    
    Application.Calculation = xlCalculationManual
    
    Do While i <= 3
        Range("B1").Value = arr(i)
        Debug.Print Range("A1").Value
        i = i + 1
    Loop
    
    Application.Calculation = xlCalculationAutomatic
End Sub

字符串
即时窗口中的输出为:

5
5
5


1
2
3


然而,反例可以如下:

Dim arr(1 To 3) As String
    arr(1) = "=1"
    arr(2) = "=2"
    arr(3) = "=3"

    Application.Calculation = xlCalculationManual
    
    Do While i <= 3
        Range("A1").Formula = arr(i)
        Debug.Print Range("A1").Value
        i = i + 1
    Loop


其中,即时窗口返回:

1
2
3


即,新输入的公式已经被计算。

相关问题