我有一个问题,公式不重新计算,如果我添加它们在一个字符串字段的一步。
我的观点是一步将各种复杂的公式计算添加到多个列中。
这些都不起作用:
-
自动计算公式打开
-
我试过
-
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