代码在字符串数组中插入的公式不计算



我有一个问题,公式不重新计算,如果我添加它们在一个字符串字段的一步。

我的观点是一步将各种复杂的公式计算添加到多个列中。

这些都不起作用:

  • 自动计算公式打开

  • 我试过

  • ActiveCell。NumberFormat = "General"-不工作

  • 我试过了应用程序。挥发性-不工作记录文本到列和将单元格分配给"general">

    Sub AddActualsSum2()
    
    Dim ws As Excel.Worksheet
    Set ws = ThisWorkbook.Worksheets("XXXX")
    Call ProtectSheet(ws, False)
    Dim r, s, monthRange, monthRange01, monthRangeDynamic As Range
    Dim MonthLock, i, LockActuals As Integer
    Dim c As String
    Dim StartActualsDate, PlanDate As Date
    
    
    Set monthRange = Range("_ActualsY02M01:_ActualsY02M12")
    Set monthRangeDynamic = Range("_ActualsSumMonthY2")
    
    Dim varData(1 To 12) As String
    Call ProtectSheet(ws, False)
    For i = 1 To 12
    varData(i) = "=1+2"
    Next
    
    Debug.Print "Format: " & monthRange(1).NumberFormat
    Debug.Print "Value: " & monthRange(1).Value
    Debug.Print "Formula: " & monthRange(1).Formula
    monthRange.Formula = varData
    
    
    End Sub
    

结果是公式= 1 + 2无处不在

在公式行点击后,公式已经计算正确。

当将数组作为块写入时,Excel将其值视为字符串(它们确实是),而不是公式。

将公式写入循环内,如

For i = 1 To 12
varData(i) = "=1+2"
monthRange.Cells(i, 1).Formula = varData(i)
Next

还有,你的变量声明是错误的。VBA要求每个变量都有一个类型,否则它们默认是变体。例如:

Dim MonthLock, i, LockActuals As Integer

应:

Dim MonthLock As Range, i As Integer, LockActuals As Integer

最新更新