[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『範囲指定方法について』(kouji)
はじめまして、よろしくお願いします。
BOOK間コピーについて教えてください
以下のようなマクロを利用しようとしていますが、1つ分からないヵ所があり質問です
wbMoto.Worksheets("集計").Range("O1:P" & Cells(Rows.Count, "P").End(xlDown).Row).copy
上記の End(xlDown)を End(xlUp) にすると 1行目しか貼り付けできません
End(xlDown)ならコピーできます
範囲指定の仕方が、良くないのでしょうか?
マクロ初心者なのでアドバイスお願いします。
Sub ハリツケ()
Dim SetFile As String Dim wbMoto, wbSaki As Workbook
Set wbMoto = ActiveWorkbook
Application.DisplayAlerts = False SetFile = "D:\office\帳票2021.xlsm" 'マスターデータファイルの取り込み場所をセット(取り込み先)
Workbooks.Open fileName:=SetFile 'マスターデータファイルを開きます() Set wbSaki = Workbooks.Open(SetFile) '開いたマスターブック名とセット(取り込み先)
wbMoto.Worksheets("集計").Range("O1:P" & Cells(Rows.Count, "P").End(xlDown).Row).copy wbSaki.Worksheets("概要").Range("T1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False '取り込み元 シート名「概要」T1から貼り付け
Application.CutCopyMode = False 'コピー切り取りを解除 Application.DisplayAlerts = True End Sub
コピー元データ
O列 P列 1 ○○ 空白 2 ○□ 500 3 △△ 200 4 △□ 150 5 ○× 20 6 ×○ 100 7 □△ 以下可変
< 使用 Excel:Excel2016、使用 OS:Windows10 >
Cells(Rows.Count, "P").End(xlDown).Row ↑の対象となるシートは? Workbooks.Open fileName:=SetFile Set wbSaki = Workbooks.Open(SetFile) 同じBookを開くの? (どん) 2021/09/09(木) 16:52
>↑の対象となるシートは? の回答が有りませんが Cells(Rows.Count, "P").End(xlDown).Row の値を調べて下さい 複数のBookやシートを処理する場合対象となる Bookやシートを明確にする必要が有ります (どん) 2021/09/09(木) 17:21
(砂糖) 2021/09/09(木) 17:26
.End(xlDown) は、Ctrlキー+↓キー の操作のこと
.End(xlUp) は、Ctrlキー+↑キー の操作のこと
なので手動でやってみてどうなるか確認してみてください。
なんなら、マクロの記録で、
その操作がどんなコードで表せられるか確認。
2つ目
wbMoto.Worksheets("集計").Range("O1:P" & Cells(Rows.Count, "P").End(xlDown).Row).copy
↑この行にブレークポイントを設定した後に、
マクロを実行。
マクロが止まったところで、
イミディエイトウィンドウに
Cells(Rows.Count, "P").End(xlDown).Addoress(,,,true)[Enter]
([Enter]はエンターキー押下の意)
とやってみるとなにが返ってくるか確認。
続いて同じく
Cells(Rows.Count, "P").End(xlUp).Addoress(,,,true)[Enter]
とやってみてなにが返ってくるか確認。
3つ目
Sub test()
Dim wbkFrom As Workbook, wbkTo As Workbook Dim rngFrom As Range, rngTo As Range Const csPath As String = "D:\office\帳票2021.xlsm"
Set wbkFrom = ThisWorkbook Set wbkTo = Workbooks.Open(csPath) With wbkFrom.Worksheets("集計") Set rngFrom = .Range(.Range("O1"), .Cells(.Rows.Count, "P").End(xlUp)) End With
MsgBox rngFrom.Address(, , , True) '意図したセル範囲か確認用。本番では削除
Set rngTo = wbkTo.Worksheets("概要").Range("T1")
rngFrom.Copy rngTo.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False End Sub
このコードだと動作がどうなるか確認。
期待の結果が得られるなら、ご自分のコードと違いを確認。
期待の結果と違う結果になるならばどうなるか、教えてください。
注)
まさか、書いてないけど、行が非表示になってるとかありますか?
(まっつわん) 2021/09/09(木) 17:30
http://www.ken3.org/vba/excel-help.html
(まっつわん) 2021/09/09(木) 17:31
(砂糖)さん
ありがとうございます。
>P1048576からEndキー上矢印キーを押したセル(通常はP列入力済みセルの一番最後の行のセ>ル)からO1までの範囲
私もそのように思いCells(Rows.Count, "P").End(xlUp).Row).copy としたのですが
貼付がうまくできませんでした?何が違うのか・・・
(まっつわん)さん
ありがとうございます。
Sub test() マクロで完璧です
自分のと比較してみます、おかしいな?未熟ですね
(kouji) 2021/09/09(木) 17:45
>何が違うのか・・・ Cells(Rows.Count, "P").End(xlUp).Row ↑は帳票2021.xlsmのアクティブシートが対象 (まっつわん)さんのは .Cells(.Rows.Count, "P").End(xlUp) 先頭に.が有るので wbkFrom.Worksheets("集計") が対象です (どん) 2021/09/09(木) 18:21
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.