VBAについて勉強中です。
Dim book1 As workbook
Dim book2 As workbook
Set book1=workbooks (“商品一覧.xlsx”)
Set book2= workbooks (“比率表.xlsm”)
book1.worksheets (“マスター”).Activate
Range(“A:B,E:E,G:H”).copy
book2. worksheets (“マスター更新”).Columns(1).paste
Application.CutCopyMode=False
book1. worksheets (“アイテム一覧”). Activate
book1. worksheets (“一覧”). Range(Range(“A2”),cells(Rows.Count,1).End(xlUp)).copy
book2. worksheets (“印刷”).Range(“A6”).PasteSpecial(xlPasteValues)
Application.CutCopyMode=False
book1. worksheets (“アイテム一覧”). Range(Range(“P2”),cells(Rows.Count,1).End(xlUp)).copy
book2. worksheets (“印刷”).Range(“C6”).PasteSpecial(xlPasteValues)
Application.CutCopyMode=False
End Sub
上記で質問があります。
① ブック1A2コピー、ブック2A6に貼付でエラーとなり、
9行目book1. worksheets (“アイテム一覧”). Activate
を追加すると実行できました。なぜ9行目が必要なんでしょうか?
②ブック1P2から最終行までをコピーし、ブック2C6から貼付けたいのですが、ブック1のA〜P列の最終行までがコピーされてしまいます。コピーしたいのはP列のみ(P2から最終行)です。
どのように書けばよいでしょうか。
P2コピー→C6から貼付けの後に、J2コピー→F6から貼付けとブック1の2行目から列単位で最終行までコピーし、ブック2の指定位置から貼付けしたいです。
③上記マクロ、もっと良いシンプルで読みやすい書き方が有れば教えてください。
No.1ベストアンサー
- 回答日時:
こんばんは
まず、コード内にある不要な半角スペースはなぜ出来るのでしょう?
後付けで足しているのでしょうか? そこは置いといて
①9行目book1. worksheets (“アイテム一覧”). Activate を追加すると実行できました。
?エラー1004は返りませんか?
book1. worksheets (“一覧”). Range(Range(“A2”),cells(Rows.Count,1).End(xlUp))
このRange(“A2”)とcells(Rows.Count,1).End(xlUp)はbook1. worksheets (“一覧”)のセル範囲とは限りません。
シートオブジェクトが明示されていませんね。
Range(“A2”)と書くとアクティブシート(worksheets (“アイテム一覧”))のA2セルを指します。
シートをまたがってRangeオブジェクトを指定するとエラーが返ると思いますが
book1. worksheets (“アイテム一覧”). Activateは不要で
色々書き方はあると思いますが、こんな書き方になるのかな?
With book1.Worksheets("一覧")
.Range(.Range("A2"), .Cells(Rows.Count, 1).End(xlUp)).Copy
End With
book2.Worksheets("印刷").Range("A6").PasteSpecial (xlPasteValues)
Application.CutCopyMode = False
xlPasteValuesなので=で結ぶことも出来るかな
ちょっと分かり難いかも知れませんが
Dim n As Long
With book1.Worksheets("一覧")
n = .Cells(Rows.Count, 1).End(xlUp)
book2.Worksheets("印刷").Range("A6").Resize(.Range("A2:A" & n).Cells.Count, 1).Value = .Range("A2:A" & n).Value
End With
Range("P2")も同様、、
②コピーしたいのはP列のみ(P2から最終行)です。
どのように書けばよいでしょうか。
cells(Rows.Count,1).End(xlUp)はA列の最終行です
なので
cells(Rows.Count,"P").End(xlUp) ①を踏まえて、などとすれば良いです。"P" は 16 でもOK
③難しい質問です。結構好みがあると思いますので、、
初めのRange(“A:B,E:E,G:H”).copy部分は
Destination:=を省略していますが
book1.Worksheets("マスター").Range("A:B,E:E,G:H").Copy _
book2.Worksheets("マスター更新").Columns(1)
Application.CutCopyMode = Falseは不要、
(半角スペースに気を付けて)
などで
他は、=で結ぶ形でWith は使うと思います。
Dim book1 As Workbook
Dim n As Long
Set book1 = Workbooks("商品一覧.xlsx")
With Workbooks("比率表.xlsm")
book1.Worksheets("マスター").Range("A:B,E:E,G:H").Copy _
.Worksheets("マスター更新").Columns (1)
With .Worksheets("印刷")
n = book1.Worksheets("一覧").Cells(Rows.Count, 1).End(xlUp).Row
.Range("A6").Resize(.Range("A2:A" & n).Cells.Count, 1).Value = _
book1.Worksheets("一覧").Range("A2:A" & n).Value
n = book1.Worksheets("アイテム一覧").Cells(Rows.Count, 16).End(xlUp).Row
.Range("C6").Resize(.Range("P2:P" & n).Cells.Count, 1).Value = _
book1.Worksheets("アイテム一覧").Range("P2:P" & n).Value
End With
End With
End Sub
未検証なのエラーがあったらごめんなさい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 他のシートからコピーする下記マクロで貼付け位置をWorksheets(1).Range("A3")の 8 2023/01/30 18:48
- Visual Basic(VBA) Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを 2 2023/06/14 01:48
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Visual Basic(VBA) 2つのシートの任意のセルの番号が一致したら、一致した行をコピーする VBA 2 2023/06/19 20:48
- Visual Basic(VBA) Sheet1をフィルターで「りんご」を抽出し、Sheet2へ地域を貼り付ける下記マクロを変更して S 2 2022/12/11 03:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
【前回の続き続きです、ご教示...
-
エクセルのマクロについて教え...
-
VBA 別ブックからコピペしたい...
-
ExcelのVBAです。フォルダ内の...
-
【前回の続きです、ご教示くだ...
-
VBS Bookを閉じるコード
-
エクセルのマクロについて教え...
-
ADOで複数のBookから抽出
-
【Excel VBA】書き込み先ブック...
-
【マクロ】違うフォルダにある...
-
Excel VBA 保存時にフォルダを...
-
ユーザーフォームの切り替えに...
-
別ブックをダイアログボックス...
-
フォルダ内の全てのファイルに...
-
Excelマクロ 該当する値の行番...
-
【ExcelVBA】インデックスが有...
-
マクロVBA別Excelブックにデー...
-
エクセルマクロで、他ブックか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
別ブックをダイアログボックス...
-
ワイルドカード「*」を使うとう...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
VBS Bookを閉じるコード
-
【ExcelVBA】インデックスが有...
-
VBA コードを実行すると画面が...
-
【ExcelVBA】zip圧縮されたCSV...
-
vbaでvbaProjectのパスワード解...
-
VBAで別ブックのシートを指定し...
-
ExcelのVBAです。フォルダ内の...
-
vbaで他のブックに転記したい。...
-
フォルダ内の全てのファイルに...
-
VBAで複数のブックを開かずに処...
-
VBSでExcelのオープン確認
-
VBA 実行時エラー 2147024893
-
【Excel VBA】書き込み先ブック...
-
VBA シート名が一致した場合の...
おすすめ情報