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 に答える