|
kyon さん、おはようございます。
>シートの最終行を自動的にみつけ、その行に項目をデータを追加していく方法を探しています。
良くある質問なのですが、適切なリンク先がみつけられなかったので。
一番下の行からEndを押して↑を押すと、文字の入っている一番下が選択されます。
これを記録して、応用したのがこれ。
ちなみに実働部分はこれだけです。
Sub test1()
Dim Rpos As Long
With Worksheets("Sheet2")
Rpos = .Range("B65536").End(xlUp).Row + 1
.Cells(Rpos, 2).Value = Worksheets("Sheet1").Range("A2").Value
.Cells(Rpos, 3).Value = Worksheets("Sheet1").Range("A1").Value
.Cells(Rpos, 6).Value = Worksheets("Sheet1").Range("A3").Value
End With
End Sub
上の分に、セルのチェックなどの分岐をつけたのがこれ。
Sub test2()
'
Dim ws(1 To 2) As Worksheet, Rpos As Long, Dflg As Boolean
Set ws(1) = ThisWorkbook.Worksheets("Sheet1") '元
Set ws(2) = ThisWorkbook.Worksheets("Sheet2") '先
With ws(2)
Rpos = .Range("B65536").End(xlUp).Row + 1
End With
'Bに転記するものがあるかどうかの判定
With ws(1).Range("A2")
If .Value = "" Then
Dflg = True
Else
ws(2).Cells(Rpos, 2).Value = .Value
End If
End With
If Dflg = True Then
MsgBox "Sheet1!A2は必須", vbExclamation, "転記中止"
Else
With ws(1).Range("A1")
If .Value <> "" Then ws(2).Cells(Rpos, 3).Value = .Value
End With
With ws(1).Range("A3")
If .Value <> "" Then ws(2).Cells(Rpos, 6).Value = .Value
End With
End If
Erase ws
End Sub
こんな感じです。
|
|