
同ブックの別シートの表から、特定の列を複数列コピーしたい。
VBA初心者です。
同ブックの別シートの表から、特定の列を複数列コピーして
Sheet2に貼り付けたいのですが、このコードでは具体的に何がエラーなのかわかりません。
調べても同じような例はなかったので、
問題点を教えてください。
なにとぞよろしくおねがいします。
ThisWorkbook.Worksheets("商品名一覧(sheet1)").Range("B5", "D5", "F5", "G5", "H5").End(xlDown).Copy _
Destination:=Sheets("商品発注場所(sheet2)").Range("B5")
No.5ベストアンサー
- 回答日時:
あなたの提示するシート名がころころ変わって、よくわかりませんでしたので、
コピー元のシート名:sheet1
コピー先のシート名:sheet2
としました。
以下のようにしていてください。
sheet1のB列の最終行が、D,F,G,Hの最終行と一致している前提です。
(各列に空白はない前提)
Public Sub sample()
Dim maxrow As Long
Dim rg As String
maxrow = Worksheets("sheet1").Cells(Rows.Count, "B").End(xlUp).Row
rg = "B5:B" & maxrow & ",D5:D" & maxrow & ",F5:F" & maxrow & ",G5:G" & maxrow & ",H5:H" & maxrow
Worksheets("sheet1").Range(rg).Copy Destination:=Sheets("sheet2").Range("B5")
End Sub
説明の不足が多く、申し訳ありません。
変数に指定する というのが私にとっては不慣れというか苦手で。
ですがこちらの変数指定を応用して、他にやりたいことなども
組み込み、思い通りに作ることが出来ました。
スタイリッシュなコードで感動です。
今回はtatsumaru77さんをベストアンサーとさせていただきます。
ありがとうございます
No.4
- 回答日時:
No.3 です。
補足です。
さっきのコードだと、「商品名一覧」以外のシートがアクティブだとエラーになるので、どっからでも呼び出せるよう修正しました。
With Sheets("商品名一覧(sheet1)")
.Range( _
"B5:B" & .Range("B5").End(xlDown).Row & "," & _
"D5:D" & .Range("D5").End(xlDown).Row & "," & _
"F5:F" & .Range("F5").End(xlDown).Row & "," & _
"G5:G" & .Range("G5").End(xlDown).Row & "," & _
"H5:H" & .Range("H5").End(xlDown).Row & "").Copy _
Sheets("商品発注場所(sheet2)").Range("B5")
End With
回答ありがとうございます。
貴殿のコードを一度動かしてみました。
きれいにコピーしてきてくれました。ありがとうございます。
"B5:B"という書き方、参考にさせていただきます。
どこからでも呼べるようにも補足までありがとうございます。
Ggrksdqnさんはとてもお優しい人ですね。
感謝です
No.3
- 回答日時:
>Range("B5", "D5", "F5", "G5", "H5").End(xlDown).Copy
こういうことは出来ないです。
<参考コード>
Sheets("商品名一覧(sheet1)").Range( _
"B5:B" & Range("B5").End(xlDown).Row & "," & _
"D5:D" & Range("D5").End(xlDown).Row & "," & _
"F5:F" & Range("F5").End(xlDown).Row & "," & _
"G5:G" & Range("G5").End(xlDown).Row & "," & _
"H5:H" & Range("H5").End(xlDown).Row & "").Copy _
Sheets("商品発注場所(sheet2)").Range("B5")
No.1
- 回答日時:
こんにちは
>具体的に何がエラーなのかわかりません。
エラーの際に、エラーメッセージが表示されるはずです。
まず、その内容を確認しましょう。エラーの直接の原因が示されているはずです。
その辺の情報がないので、特定はできませんが、ありそうなのは
・シート名が正しくない
・Rangeの指定がおかしい
といったあたりでしょうか。
特に後者の
>Range("B5", "D5", "F5", "G5", "H5")
は確実にエラーになります。
Range("B5, D5, F5, G5, H5")
のような記述であればエラーにはなりませんが、End(xlDown)としているので、仮にエラーが出なくても、質問者様の意図とは違う結果になるのではないかと懸念します。
とは言っても、実際になさりたいことが何なのかわかっていませんので、違うとは限りませんけれど…
お早い回答ありがとうございます。
不足ですみません。
("商品名一覧(sheet1)")に、A列からH列までの表があり、
4行目を見出し名として、5行目から項目が入っています。
このB,D,F,G,H列を5行目から最終行までコピーして、
("商品発注場所(sheet2)")のB,C,D,E,F列の5行目にペーストしたい
ということです。
掲題コードから↓にコードを直して動かしてみたのですが、
B列最後の1つのセルしかコピペしてきてくれません。
ThisWorkbook.Worksheets("データ項目一覧").Range("B5,D5,F5,G5,H5").End(xlDown).copy _
Destination:=Sheets("項目使用テーブル").Range("B5")
どう記述すれば他の列も含め、5行目から最終行までコピーしてくれでしょうか・・
これで意図がおわかりいただければよいのですが・・
拙くてすみません。よろしくおねがいします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IFステートの中にWithステート...
-
【VBA】指定した検索条件に一致...
-
エクセルのマクロでアクティブ...
-
別のシートを参照して計算する方法
-
コンボボックスとオートフィル...
-
Excelマクロ 変数に代入した条...
-
エクセルのマクロで条件一致の...
-
VBA FIND next複数の条件
-
excelのマクロで該当処理できな...
-
実行時エラー'1004': WorkSheet...
-
マクロを使って、シート印刷完...
-
vbaエクセルマクロ RemoveDupli...
-
VBA オートフィルター繰り返し
-
実行時エラー1004「Select メソ...
-
【変更】ファイルを閉じてダイ...
-
VBAで指定シート以外の選択
-
エクセル・マクロ シートの非...
-
Excelマクロのエラーを解決した...
-
シートが保護されている状態で...
-
セルのコピーで「オブジェクト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
特定の文字を含むシートだけマ...
-
実行時エラー'1004': WorkSheet...
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
エクセルVBA Ifでシート名が合...
-
実行時エラー1004「Select メソ...
-
VBA 存在しないシートを選...
-
エクセルで通し番号を入れてチ...
-
VBA 検索して一致したセル...
-
XL:BeforeDoubleClickが動かない
-
VBA 指定した回数分、別シート...
-
VBAマクロでシートコピーした新...
-
シートが保護されている状態で...
-
ブック名、シート名を他のモジ...
-
【VBA】全ての複数シートから指...
-
別のシートから値を取得するとき
-
ExcelのVBAのマクロで他のシー...
-
Excel チェックボックスにチェ...
おすすめ情報