さて、私の問題は、 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
エラーが発生します。シートはすべて同じテンプレートに準拠しています。