1

私はこのスクリプトを持っています、私はエラーを受け取り続けます:Run-time error '1004': Method 'Range' of object _'Worksheet' failed

スクリプトは次のとおりです。

Option Explicit
    Sub ONJL()

    Dim lastrow As Long
    Dim wsRD As Worksheet 'Raw Data

    Set wsRD = Sheets("Raw Data")

        With wsRD
            Application.ScreenUpdating = False
            lastrow = wsRD.Range("J:J").End(xlUp).Offset(1, 0)
            wsRD.Range("J" & lastrow).Value = "=Today()"
        End With

    End Sub

これが、最後の行を検索して、今日の日付を最後のセルに貼り付ける方法だと思いましたか?

4

2 に答える 2

2

いくつかの問題があります。

  • を使用するときはwith、オブジェクトを参照する必要があります.
  • の結果はOffset(x,y)数値ではなく範囲です-行に興味があるので、追加する必要があります.Row
  • 最後のEnd(xlUp)行から作業を開始する必要があります

これはおそらくあなたが意図したものです:

Sub ONJL()

    Dim lastrow As Long
    Dim wsRD As Worksheet 'Raw Data

    Set wsRD = Sheets("Raw Data")

    With wsRD
        Application.ScreenUpdating = False
        lastrow = .Range("J" & .Rows.Count).End(xlUp).Row
        .Range("J" & lastrow + 1).Formula = "=Today()"
    End With

End Sub

また、どこかで画面の更新をオンにすることを忘れないでください。

于 2012-07-09T15:37:20.153 に答える
2

lastrowLong 変数として宣言されていOffsetますが、オブジェクトを返しRangeます。プロパティは、行のRow数値を示します。

Sub ONJL()

  Dim lastrow As Long
  Dim wsRD As Worksheet  'Raw Data

  Set wsRD = Sheets("Raw Data")

  With wsRD
    Application.ScreenUpdating = False
    lastrow = .Cells(Rows.Count, 10).End(xlUp).Offset(1, 0).Row
    .Range("J" & lastrow).Formula = "=Today()"
  End With

Application.ScreenUpdating = True

End Sub
于 2012-07-09T16:01:09.713 に答える