[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『Range(左上のセル,右下のセル)でセル範囲を特定』(ヨッシー)
「基礎名簿」から必要なデータを「名簿」に取り出すために次のコードを作成しました。きちんと、実行されました。
("D4:D29")や("B2:B27")をどんなデータの量にも対応できるように、
Range(左上のセル,右下のセル)の考え方で作り直したのですが、1行目でデバックしてしまいます。考え方が間違っているのでしょうか?
Sub Macro1() '氏名・性別・生年月日・住所貼付け
With Sheets("基礎名簿")
.Range("D4:D29").Copy Sheets("名簿").Range("B2:B27") .Range("E4:E29").Copy Sheets("名簿").Range("D2:D27") .Range("L4:L29").Copy Sheets("名簿").Range("E2:E27") .Range("G4:G29").Copy Sheets("名簿").Range("F2:F27") .Range("I4:I29").Copy Sheets("名簿").Range("K2:K27") .Range("J4:J29").Copy Sheets("名簿").Range("L2:L27")
End With
End Sub
下が作り直したコードです。改行されていますが、6つのコードです。
Sub Macro1() '氏名・性別・生年月日・住所貼付け
Sheets("基礎名簿").Range(Range("D4"), Range("D4").End(xlDown)).Copy Sheets("名簿").Range("B2") Sheets("基礎名簿").Range(Range("E4"), Range("E4").End(xlDown)).Copy Sheets("名簿").Range("D2") Sheets("基礎名簿").Range(Range("L4"), Range("L4").End(xlDown)).Copy Sheets("名簿").Range("E2") Sheets("基礎名簿").Range(Range("G4"), Range("G4").End(xlDown)).Copy Sheets("名簿").Range("F2") Sheets("基礎名簿").Range(Range("I4"), Range("I4").End(xlDown)).Copy Sheets("名簿").Range("K2") Sheets("基礎名簿").Range(Range("J4"), Range("J4").End(xlDown)).Copy Sheets("名簿").Range("L2")
End Sub
< 使用 Excel:Excel2016、使用 OS:Windows10 >
>Sheets("基礎名簿").Range(Range("D4"), Range("D4").End(xlDown)).Copy Sheets("名簿").Range("B2") ↓ Sheets("基礎名簿").Range(Sheets("基礎名簿").Range("D4"), Sheets("基礎名簿").Range("D4").End(xlDown)).Copy Sheets("名簿").Range("B2")
若しくは
With Sheets("基礎名簿") .Range("D4", .Range("D4").End(xlDown)).Copy Sheets("名簿").Range("B2") .Range("E4", .Range("E4").End(xlDown)).Copy Sheets("名簿").Range("D2") .Range("L4", .Range("L4").End(xlDown)).Copy Sheets("名簿").Range("E2") .Range("G4", .Range("G4").End(xlDown)).Copy Sheets("名簿").Range("F2") .Range("I4", .Range("I4").End(xlDown)).Copy Sheets("名簿").Range("K2") .Range("J4", .Range("J4").End(xlDown)).Copy Sheets("名簿").Range("L2") End With
若しくは "基礎名簿" をアクティブにしてシートの参照を要らなくし
Sheets("基礎名簿").Activate Range("D4", Range("D4").End(xlDown)).Copy Sheets("名簿").Range("B2") Range("E4", Range("E4").End(xlDown)).Copy Sheets("名簿").Range("D2") Range("L4", Range("L4").End(xlDown)).Copy Sheets("名簿").Range("E2") Range("G4", Range("G4").End(xlDown)).Copy Sheets("名簿").Range("F2") Range("I4", Range("I4").End(xlDown)).Copy Sheets("名簿").Range("K2") Range("J4", Range("J4").End(xlDown)).Copy Sheets("名簿").Range("L2")
(ピンク) 2020/05/10(日) 06:17
With Sheets("基礎名簿") .Range("D4", .Range("D4").End(xlDown)).Copy Sheets("名簿").Range("B2") .Range("E4", .Range("E4").End(xlDown)).Copy Sheets("名簿").Range("D2") .Range("L4", .Range("L4").End(xlDown)).Copy Sheets("名簿").Range("E2") .Range("G4", .Range("G4").End(xlDown)).Copy Sheets("名簿").Range("F2") .Range("I4", .Range("I4").End(xlDown)).Copy Sheets("名簿").Range("K2") .Range("J4", .Range("J4").End(xlDown)).Copy Sheets("名簿").Range("L2") End With
のコードでデータが反映されました。
I列やJ列のデータの並びに空白セルがあるときは、xldownをxlupにしてみたのですが、うまくいきませんでした。どのように変えればいいのでしょうか。
(ヨッシー) 2020/05/10(日) 08:19
>どのように変えればいいのでしょうか。
一番下のセルから上に
With Sheets("基礎名簿") .Range("D4", .Range("D" & Rows.Count).End(xlUp)).Copy Sheets("名簿").Range("B2") .Range("E4", .Range("E" & Rows.Count).End(xlUp)).Copy Sheets("名簿").Range("D2") .Range("L4", .Range("L" & Rows.Count).End(xlUp)).Copy Sheets("名簿").Range("E2") .Range("G4", .Range("G" & Rows.Count).End(xlUp)).Copy Sheets("名簿").Range("F2") .Range("I4", .Range("I" & Rows.Count).End(xlUp)).Copy Sheets("名簿").Range("K2") .Range("J4", .Range("J" & Rows.Count).End(xlUp)).Copy Sheets("名簿").Range("L2") End With
(ピンク) 2020/05/10(日) 09:12
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.