0

助けを求めたいと思います。私のマクロは、入力されたすべての行に現在の日付を入力しようとしていました。最初はうまくいったように見えましたが、突然、ヘッダーを現在の日付に変更 (上書き) し始め、現在の日付を下の 1 つのセルに入れました。適切に機能させるために何を修正すればよいですか?

マクロコードは次のとおりです(再フォーマット):

Sub DateVerified()

    Sheets("Data").Activate
    Dim rngAddress As Range
    Set rngAddress = Range("A1:ZZ1").Find("Verified Date").Offset(1, 0)
    rngAddress.Select

    Dim ac As Integer
    Dim lastr As Long
    Dim sh As Worksheet


    Set sh = ActiveSheet
    ac = ActiveCell.Column
    lastr = sh.Cells(Rows.Count, ac).End(xlUp).Row
    Range(Cells(2, ac), Cells(lastr, ac)).Select
    Selection.ClearContents
    Selection.Formula = "=TEXT(Now(),""dd/mm/yyyy"")"
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub
4

2 に答える 2

1

以下適し ている可能性があります。

Sub DateVerified()
    Dim rngAddress As Range
    Dim ac As Integer
    Dim lastr As Long
    Dim sh As Worksheet

    Sheets("Data").Activate
    Set rngAddress = Range("A1:ZZ1").Find("Verified Date").Offset(1, 0)
    rngAddress.Select
    Set sh = ActiveSheet
    lastr = sh.Cells(Rows.Count, 1).End(xlUp).Row
    ac = ActiveCell.Column
    Range(Cells(2, ac), Cells(lastr, ac)).Select
    Selection.ClearContents
    Selection.Formula = "=TEXT(Now(),""dd/mm/yyyy"")"
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues
End Sub
于 2013-07-24T17:10:04.410 に答える
0

これは、次の行で間違っている可能性が高いと思います。

lastr = sh.Cells(Rows.Count, ac).End(xlUp).Row

これは、アクティブな列のスプレッドシートの最後の行に移動し、Excel で ctrl+up と同等の操作を行って、その列に入力された最後の行を見つけようとします。この理論をテストするには、この直後にコード行を追加します。

debug.print "lastr set to " & lastr 

この値がどのように設定されているかを直接ウィンドウで確認します (Ctrl+G を使用して VBA エディターから開きます)。

于 2013-07-24T17:01:49.160 に答える