13

シート 2 の列 A に今日の日付を追加しようとしています。マクロがシート 1 の列 B の選択範囲をシート 2 の新しい行に貼り付けるたびに。

私のスクリプトは、新しい行を追加して選択範囲をシート 2 に貼り付けるように機能しますが、シート 2 の新しい行の列 A の日付を取得する方法がわかりません。これが私のマクロのスクリプトです。

Sub move()  
        Dim i As Integer 
        Application.ScreenUpdating = False
        ActiveWorkbook.Sheets("Sheet1").Range("A1,A2,A3,A4,A5").Copy
       
        Sheets("Sheet2").Select
        i = 3
        While Range("B" & i).Value <> ""
            i = i + 1
        Wend
        Range("B" & i).Select
   
        Selection.PasteSpecial (xlValues), Transpose:=True
 
        Worksheets("Sheet1").Range("A1:A5").Clear
 
End Sub
4

2 に答える 2

4

Now()列 A に値を入れる例を次に示します。

Sub move()
    Dim i As Integer
    Dim sh1 As Worksheet
    Dim sh2 As Worksheet
    Dim nextRow As Long
    Dim copyRange As Range
    Dim destRange As Range

    Application.ScreenUpdating = False

        Set sh1 = ActiveWorkbook.Worksheets("Sheet1")
        Set sh2 = ActiveWorkbook.Worksheets("Sheet2")
        Set copyRange = sh1.Range("A1:A5")

        i = Application.WorksheetFunction.CountA(sh2.Range("B:B")) + 4

        Set destRange = sh2.Range("B" & i)

        destRange.Resize(1, copyRange.Rows.Count).Value = Application.Transpose(copyRange.Value)
        destRange.Offset(0, -1).Value = Format(Now(), "MMM-DD-YYYY")

        copyRange.Clear

    Application.ScreenUpdating = True

End Sub

Whileループを使用するよりも列 B の最後の行を取得するより良い方法があります。ここにはたくさんの例があります。他のものより優れているものもありますが、何をしているか、ワークシートの構造がどのように見えるかによって異なります。ここでは、移動している行/レコードを除いて、列 B がすべて空であると想定するものを使用しました。そうでない場合、またはB1:B3値が含まれている場合は、変更するか、別の方法を使用する必要があります。または、ループを使用することもできますが、代替手段を検索します:)

于 2013-10-24T21:33:32.093 に答える