• ベストアンサー

VBAの複数のセルのコピー法がわかりません。

VBAの複数のセルを選択、コピーしようとしているのですができません。 エクセルで複数の選択&コピーができないので、普通のやり方ではできないとわかっています。でも、やりたいんです。どなたか、その方法に知恵を貸していただける方はいませんか? 現在、ダイアログボックスにて複数のセルを入力した情報について、それを他のシートにコピーしようとしています。 (なぜ、いちいちダイアログで入力しているのかというと、その入力情報を元に、オフセットで過ぎのセルの情報に移動しそれも個コピー&ペーストしようとしているのです。) Set IntTest = Application.InputBox(Prompt:=StrMsgTest, Type:=8) で、複数のセルを選んでもらった情報を他のシートにコピーしようとしています。 複数のセルのコピーができないので、今はUnionを使ってどうにかならないか試していますが、これまた全然わかりません。 Union(Range("g1:k8"), Range("h9:h19"), Range("g20:k30")).Select Selection.Copy Destination:=Worksheets("Sheet2").Range("A1") どなたか、「コピー&ペースト」について、またそれとともに「ダイアログ入力からのそのコピー&ペーストの方法」について知恵を貸していただけませんか?

質問者が選んだベストアンサー

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

>複数のセルを選んでもらった情報を他のシートにコピーしようとしています どこに貼り付けるのか書かれていないので違っているかもしれませんが、InputBoxメソッドで選択したレンジの値を、別シートの同じアドレスのセルに書き込む方法ではいけませんか? Sub macro() Dim ws As Worksheet Dim rng, trg As Range  Set ws = ActiveSheet  Set trg = Application.InputBox(prompt:="セルを選択してください", Type:=8)  If Not trg Is Nothing Then   Worksheets.Add after:=ws '←とりあえずシートを追加してます   For Each rng In trg    ActiveSheet.Range(rng.Address).Value = rng.Value   Next rng  End If End Sub この方法では書式はコピーされません。セルを1つずつCopyして、Pasteする方法も考えられますが、それはお試しください

shishsi
質問者

お礼

質問自体があいまいだったのに、丁寧な回答をありがとうございます。 アドレスのセルに書き込む方法で対処してみます。ありがとうございました。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 >でも、やりたいんです。 私は、そのロジックが理解できないですね。 コピー&ペーストの問題ではなく、その手順と内容の問題です。 出過ぎたものという判断を、インプットボックスで行うということ自体、判定に無理がありますし、任意で領域を選択しているので、コピーしたデータに順序も定まりません。 また、それぞれの貼り付けした後の領域の、それぞれの位置関係も不明です。そもそも、何に対して、シート2 のA1 なのでしょうか?順序のないデータ領域に、A1 の貼り付け先ということはありえません。今の段階では、せいぜい、Sheet1 の選んだ領域と同じ場所のSheet2しか無理だと思います。 もう、一度、振り出しに戻って、考え直したほうがよいと思います。

shishsi
質問者

お礼

すみません。質問の仕方がよくなかったですね。 考え直します。

  • Nayuta_X
  • ベストアンサー率46% (240/511)
回答No.1

Unionは、セルの参照に使用できますが、COPYには、向かないです。 セルのコピーアンド ペーストは、 例;  Worksheets("Sheef1").Range("A1:C3").Copy Worksheets("Sheef1").Paste(Worksheets("Sheef1").Range("B2:D4")) となります。

shishsi
質問者

お礼

回答ありがとうございます。 私の質問があいまいだったために、いろいろな回答を頂きました。 g1からk8、h9からh19、g20からk30までを、一度にコピーする仕方を知りたかったんです。 もう少し質問の内容を絞って出直してきます。

関連するQ&A

  • エクセル(VBA)で複数セルのコピーができません

    お世話になっております。 マクロを使って複数のセルを選択してコピーし、別のブックにあるシートへ 貼り付けたいのですが上手くいきません。  Range(Selection, Selection.End(xlToRight)).Select   Selection.Copy 上記のようにコピーしたいセルの入っている行全体の貼り付けは出来たのですが、必要なデータのセルのみ(隣り合っていない)を選択して 貼り付けようとすると何もコピーされていない状態で終了してしまいます。 (変数に代入してコピー等・・・) どなたか教えて下さい。

  • VBAでの結合セルのコピー&ペースト

    こんにちは。 EXCELのVBAでマクロを作成しています。 セルの値のコピー&ペーストを行おうとしているのですが、結合されているセルのペーストのときに、「同じ結合セルが必要です」とエラーになってしまいます。 例えば、A1とA2が結合されたセル+A3をコピー Worksheets(x).Activate Range("A1:A3").Selection Range("A1:A3").Copy 別のシートで、B1とB2が結合されたセル+B3にペースト Worksheets(y).Activate Range("B1:B3").Paste セルの結合を解除すればうまくいきます・・・ セルを結合したままペーストしたいのですが、どうやら間違っているようです(ノ_・。) どなたか教えてください。 よろしくお願いします。

  • 複数ブックを纏めて1ブックの1シートずつにコピー

    仕事で大量の処理をしなければならず、マクロ化を考えています。 どなたかご教示頂けないでしょうか。 大変困っています助けて下さい。 既定ブック(9シート1,2,3,4,5,6,7,8,9と名前をつけています。レイアウトは全て同じです。)をコピーした後に複数のブック(1シートのみです。既定ブックとほぼレイアウトは一緒です。)を指定し、一部分コピーをし、既定ブックに1シートごとペーストし、(担当者により複数ファイル数は異なります)名前付けてブックを保存後閉じるという作業をマクロ化したいと思っています。 500ファイルを担当者別にコピー&ペーストしなければならないので、是非ご教示頂けないでしょうか。何卒お願い致します。 なお、ペースト箇所は以下になります。(全てセルの結合をしております。) 【貼付箇所】 コピー元:Range("G6:P13").Select    → コピー先:Range("G6:P13").Select  コピー元:Range("V5:AD11").Select   → コピー先:Range("V5:AD11").Select 【値貼付箇所】 コピー元:Range("AA23:AD27").Select  → コピー先:Range("AG26:AG30").Select コピー元:Range("G23:Z27").Select    → コピー先:Range("AH26:AH30").Select

  • 統合セルの混じった複数セルのコピー&ペーストがわかりません。

    複数のセルのコピー、その後その情報を操作してペーストする方法がわかりません。 シート1にある情報は、 A1:E8は、1行づつ統合されています。A1:E1が統合されておりvalue=「1」、A2:E2が統合されておりvalue=「2」、・・A8:E8が統合されておりvalue=「8」、という具合です。 A9:E19は、統合されておらず、それぞれのセルに情報が入っています。 それらA1:E19を1単位として、右隣に同じ形式(2単位目はF1:J19)の情報が100個ほど並んでいます。 このシート1に対し、 Set IntTest = Application.InputBox(Prompt:="範囲をドラッグしてください。",Type:=8) で「$A$1:$E$8,$B$9:$B$19」と入力したら、その情報をコピーして、別シート2のA列1列にそれらの情報をペーストしたいのです。その後次々に、シート1の入力した単位の隣の単位に対しても同じことをしていきたいのです。シート1の2単位目のF1:J19に対して、相対的に同じ部分をシート2のB列1列に貼り付け・・という具合に。 よろしくお願いします。

  • 複数のシートを1つのシートにコピーしたい

    VBA初心者です。よろしくお願いします。 【状況】 1つのワークブックの中に『まとめ』という名前のシート、それ以外にコピーしたいシートが複数あります。 コピーしたくないシートもあります。 まとめを一旦クリアし、コピーしたいシートだけをコピーして貼り付けたいです。 まとめシートもコピーしたいシートも、データの入っているセルは"B5"から始まり、M列までの任意の行までデータが入っています。(B5:M?) 【やりたいこと】 コピーしたいシートのみ、データの入っている範囲をコピーして、まとめシートに貼り付けたい。 最終行を取得するVBAはいろいろなサイトを参考に書くことができたのですが、そこから"B5"までの範囲を指定してコピーをするという方法がいまいち分かりません。 参考にしたサイトはA1~特定の範囲のみ選択というものばかりで・・・。 稚拙ながら途中まで書いたコードです。 (1)Sub B5から最終セルの選択とコピー() (2)Range("B65536").End(xlUp).Offset(0, 11).Select (3)Range("B5", ※).Copy (4)End Sub ※に(2)で取得した最終セルを代入したいのですが方法が分からず・・・。 ここでまず躓いてしまっています。 どうかお知恵を貸して下さい。よろしくお願いします。

  • VBA セルの値を別セルにコピーするには

    VBAでPastespecialでセルの値を別セルにコピーするマクロを組みたいです。 以下は参考にしたソースコードです。 Worksheets("Sheet1").Range("A1:B10").Copy Worksheets("Sheet2").Range("A1").PasteSpecial _                  Paste:=xlPasteValues, _                  Operation:=xlNone, _                  SkipBlanks:=False, _                  Transpose:=False あるExcelマクロの入力フォームSheetに、製品リストと使用している場所のマスタデータをクエリで読み込んで、製品IDと場所のコードを入力したらINDEX関数で抽出し、マクロ実行ボタンを押すと抽出結果を入力フォームの入力欄に貼り付けします。 上記のマクロだと貼り付けする元セルを移動させたら内容がずれた値がそのまま貼り付けされてしまうと思われますが、地道にコードのコピー元のセルを書き直さないといけないのでしょうか。 Excelの関数だと参照範囲を固定したら掴んで移動させてもセル番地が連動して移動してくれますが、マクロの場合どのようにすれば良いでしょうか。 また、複数個所のセルをコピーするので Paste:=xlPasteValues, _ Operation:=xlNone, _ SkipBlanks:=False, _ Transpose:=False をコピーするセルの箇所に毎回入れていますが、コピー元のセル・コピー先のセル番地を一括して実行する方法はありますでしょうか。 VBAはソースコードを参考に当てはめているだけで、自力でコードを書くスキルは皆無です。 Excelは2016です。 詳しい方いましたらご教授ください。よろしくお願い致します。

  • エクセルVBAのコーディング

    現在、次のようなことがやりたくてエクセルのコードを作ってみました。 ・データが書かれたエクセルの複数のsheetの特定のセルをコピーして、sheet1にコピーペーストしていきたい。 そこでこのようなコードを書いてみました。 Private Sub Worksheet_Activate() Sheet4.Select Range("A16").Copy Sheet1.Select Range("U63").Select Sheet1.Paste End Sub とりあえずSheet4のセルA16のデータをSheet1のU63にコピーペーストするようにしてみたのですが、うまくいきません。 この場合のコードの書き方をご教授いただけないでしょうか? どうぞ、よろしくお願い致します。

  • セルのコピーペースト

    ある人が、シート「Sheet1」のセルA1をコピーして セルB1にペーストしました。 この操作をされたことを知る方法ってありますか? やりたいことは、セルがペーストされたときに 「A1のセルがB1のセルにコピーペーストされたました。」 とメッセージを表示したいと思っています。

  • excel2003 複数のシートのコピーペースト

    excel2003で複数のシートを持つファイルを他のファイルへコピーペーストすることは可能でしょうか。 例えば5枚のシートのH列だけを全て選択し、他のファイルのH列にまとめて貼り付けるようなことは可能でしょうか。 宜しくお願い致します。

  • 【VBA】コピー&複数個所のペースト繰り返し

    前回と同じ質問ですが、説明が足りなかったので画像を添付いたしました。 添付画像のように、1つの値をコピーし、別シートの複数個所(同じ列の違う行)へ順次ペーストしたいのですが、貼付けデータやペーストする回数が増えた場合でも対応できるようなVBAを教えてください。 コピペする条件としては、MsgBox関数を使い「コピーするか?」で「はい」を選択すると、任意のセルにデータがコピペされます。 よろしくおねがいいたします。

専門家に質問してみよう