0

私は VBA に不慣れで、どこかで行き詰まっています。列 A の最後の行を列 H までコピーし、列 I の最後の行まで貼り付ける必要があります。列の最後の行は常に変更されます。

例えば; 私のデータは A2:H2 にあり、I5 はデータのある最後のセルです。
私のコードは、A2:H2 をコピーして A3:H5 に貼り付ける必要があります。2回目にマクロを実行すると(それぞれの列に新しいデータを追加した後)、A6:H6をコピーして、列Iの最後の行まで貼り付けます。

私は自分のニーズを満たさない 2 つのコードを書きました。

最初のコードは;

  Sub OrderList1()

    Range("a65536").End(xlUp).Resize(1, 8).Copy _
    (Cells(Cells(Rows.Count, 9).End(xlUp).Row, 1))

  End Sub

このコードは A3:H4 をスキップし、A5:H5 にのみ貼り付けます

2 番目のコードは;

 Sub OrderList2()
   Range("A2:H2").Copy Range(Cells(2, 8), _
   Cells(Cells(Rows.Count, 9).End(xlUp).Row, 1))

 End Sub

A2:H3 をコピーして A5:H5 に貼り付けますが、新しいデータを追加すると、A5:H5 から貼り付けが開始されません。A2:H2 から開始し、古いデータに上書きします。何を変更する必要があるかはわかります。範囲は最初のコードのようにダイナミックレンジにする必要がありますが、コードを書くことができません。

少しでもお役に立てれば幸いです。

4

2 に答える 2

2

これを出発点として使用することをお勧めします。

Dim columnI As Range
Set columnI = Range("I:I")

Dim columnA As Range
Set columnA = Range("A:A")

' find first row for which cell in column A is empty
Dim c As Range
Dim i As Long
i = 1
For Each c In columnA.Cells
    If c.Value2 = "" Then Exit For
    i = i + 1
Next c

' ok, we've found it, now we can refer to range from columns A to H of the previous row
' to a variable (in the previous row, column A has not been empty, so it's the row we want
' to copy)
Dim lastNonEmptyRow As Range
Set lastNonEmptyRow = Range(Cells(i - 1, 1), Cells(i - 1, 8))

' and now copy this range to all further lines, as long as columnI is not empty
Do While columnI(i) <> ""
   lastNonEmptyRow.Copy Range(Cells(i, 1), Cells(i, 8))
   i = i + 1
Loop
于 2012-08-27T09:10:33.737 に答える
1

将来の機能を可能にするためにこれを試してみてください。または、少なくとも私にとってはそうでした...それを理解するのに助けが必要かどうか尋ねてください:)

Option Explicit

Sub lastrow()
    Dim wsS1 As Worksheet 'Sheet1
    Dim lastrow As Long
    Dim lastrow2 As Long

    Set wsS1 = Sheets("Sheet1")

    With wsS1

'Last row in A
        lastrow = Range("A" & Rows.Count).End(xlUp).Row

'Last Row in I
        lastrow2 = Range("I" & Rows.Count).End(xlUp).Row

'Cut in A:H and paste into last row on I
        wsS1.Range("A2:H" & lastrow).Cut wsS1.Range("I" & lastrow2)
    End With

End Sub
于 2012-08-27T14:26:02.717 に答える