好的,所以我的问题是无论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
错误。这些表都符合相同的模板。
答案 0 :(得分:0)
首先我会尝试这个:
With ActiveSheet.Range("P5:P500")
.NumberFormat = "General"
.FormulaR1C1 = "=TRUE"
End With
有时单独格式化会导致覆盖