2

好的,所以我的问题是无论设置 NumberFormat 是什么,我的公式仍然显示为文本,直到我进入单元格并按 Enter 键。我想要做的是动态创建一个新列并用公式填充第 5 行 - > 500 的范围。我的完整代码如下,我尝试了不同的变体,例如将格式专门设置为公式的输出,在设置公式后移动块.NumberFormat =内部With

我也尝试过.Calculate尝试让它重新计算的范围。不管公式多么简单,它仍然不喜欢它。

Sub AddHaulageRows()
    If ActiveSheet.Name Like "WK*" Or ActiveSheet.Name = "WTemplate" Then
        If ActiveSheet.Cells(3, 16).Value <> "Haulage Rate" Then
             Columns("P:P").Insert Shift:=xlToRight
             ', CopyOrigin:=xlFormatFromLeftOrAbove
             ActiveSheet.Cells(3, 16).Value = "Haulage Rate"
             ActiveSheet.Range("P5:P500").NumberFormat = "General"
            With ActiveSheet.Range("P5:P500")
                'Setting formula to the most simplest thing I can do.
                .FormulaR1C1 = "=TRUE"
             End With
        Else
            Columns("P:P").Delete Shift:=xlToLeft
        End If
    Else
    MsgBox "Cannot add row as this is not a valid weekly sheet.", vbCritical
    End If
End Sub

奇怪的是它适用于我工作簿中的某些工作表,但不适用于其他工作表。在某些工作表上,它只是给出了一个1004 Application-defined or object-defined错误。这些工作表都符合相同的模板。

4

1 回答 1

0

首先我会试试这个:

With ActiveSheet.Range("P5:P500")
  .NumberFormat = "General"
  .FormulaR1C1 = "=TRUE"
End With

有时单独的格式会导致覆盖

于 2013-08-01T12:39:14.780 回答