VBAのマクロ初心者向け!マウスドラッグで行をコピーする方法

このQ&Aのポイント
  • VBAのマクロを使って、マウスドラッグで指定した行をコピーし、別のシートにペーストする方法を教えてください。
  • 具体的には、sheet1の特定の列から行を抜き出し、指定した範囲をドラッグすると、その行がsheet2にコピーされるようなマクロを作成したいです。
  • マクロボタンを押して、商品の選択範囲を指定することで、選択した行の情報がsheet2に自動的にコピーされるようにしたいです。
回答を見る
  • ベストアンサー

VBAのマクロに詳しい方!!

初歩的なことですが、マクロ初心者なので 教えて下さい。 A,1に分類、B,1に商品名、C,1にH店の売上個数、D,1にK店の売上個数が入っている時、 sheet1のB列の抜き出したいセルをマウスでドラッグすると、そこの行がコピーされ、sheet2にその行がペーストされる仕組みのマクロを作りたいのですが、どうすればいいのでしょうか(´・_・`) 例えば、マクロボタンを押して、mainを選択したら、"商品を選択してください"といったinputboxが出てきて、B4:B8を選択したら、4行目から8行目までが、sheet2の2行目から6行目にコピーされているようにしたいということです。 詳しい方、教えて下さい!

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

既出回答でよいのかもしれない。 しかし、質問者の考えに、引きずられ過ぎと思ったので下記を書いてみた。 >初歩的なことですが、マクロ初心者なので これは初心者向けの課題ではない。VBAの経験やビジネス経験が問われるむつかしい課題だと思う。 >マクロボタンを押して、mainを選択したら、"商品を選択してください こういう誘導があるとApplication.Inputboxの利用にいってしまうが、 この処理の実行のトリガをどう考えるかが、(自分のVBAの力量と相談してやらざるを得ないので)むつかしいと思う。この点は、経験(実務経験とVBAと両方)を積まないとよいものはできないと思う。 ーー 小生の試案は (1)シート(Sheet1)の上に、図形の1つ四角形を張り付ける。(これはエクセルが想定する方式でないかもしれない。ユーザーフォームなどを使うのが正道なのかも。質問者の意図を尊重してやってみた) >mainを選択したら 他の言語ではMainは、入口として、重要な概念として出てくるが、エクセルVBAでは場違い。 イベントプロシージュアーを使う場合はそう思う。 (2)(1)の図形のクリックイベントに処理を入れる。 この「シートの上!に」貼りつける図形には、初心者的にはクリックイベントしか無いようだ。 イベントを何にするか、ということが質問者には明確に意識されているかな。 ーー 最後に、質問表現だが (1)エクセルの質問では、>A,1に分類、と書かずA1と番地を表現する場合が多い(A1形式) (2)シート(名)を、はっきり書いて(仮定じてでも)質問すること。 >sheet1のB列のは、>A,1にぶんるいの前に書くべきだし。結果はSheet2などを明記すべきだ。 ブックーシートーセル番地の構成を、質問では常に明確に説明すること。 ーーー Sheet1とSheet2を用意する。 Sheet1のA-F列に(仮に)テストデータを用意。本番ではF列を修正のこと。 シートSheet1に「図形の四角」を1つ貼り付け。 その図形上で、右クリックすると、「マクロの登録」が出るから、クリックする。 VBE画面になる。シートのクリックイベントです。 そこには下記が現れる。 Sub 角丸四角形1_Click() End Sub その間の行に下記を書く。 === Sub 角丸四角形1_Click() rf = Selection.Cells(1).Row MsgBox rf re = Selection(Selection.Count).Row MsgBox re x = Worksheets("Sheet2").Range("A10000").End(xlUp).Row MsgBox x Worksheets("Sheet1").Range(Cells(rf, "a"), Cells(re, "F")).Copy Worksheets("Sheet2").Activate Worksheets("Sheet2").Cells(x + 1, "A").Select ActiveSheet.Paste Application.CutCopyMode = False End Sub やっていること ・Sheet1のコピーするデータ範囲を操作者が選択する。 ・その最初行と最終行を割り出し ・Sheet2のすでにあるデータのA列の最終行を取得 ・その次の行からに貼り付け。 Msgboxの行は、テストで納得で来たら削除すること。 新しい範囲で連続操作が可能です。 ーー ・選択したセルが空でないか ・範囲が過去の選択範囲と、ダブっていないか などを入れるとむつかしくなって、骨子を見失うので略。 どうしても必要というのであれば、この課題素のものが、初心者には過ぎた課題だということ。 他人に操作をやらせたり、仕事で使う場合は、それらチェックも必須であろうが、そういうことにプロの場合は苦労するのだと思う。

popopopipopopo
質問者

お礼

お二方ともありがとうございました。 本当に助かりました! まだまだマクロができるような段階ではないことを実感した次第です。

その他の回答 (1)

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.1

こんにちは こんな感じでしょうか? Sub test()   Dim sh1 As Worksheet   Dim sh2 As Worksheet   Dim t As Range   Dim p As Range   On Error Resume Next   Set t = Application.InputBox("B列のセル範囲を選択して下さい。", "商品を選択して下さい。", , , , , , 8)   If t Is Nothing Then Exit Sub   On Error GoTo 0   Set sh1 = Worksheets("Sheet1")   Set sh2 = Worksheets("Sheet2")   Set p = sh2.Range("A" & Rows.Count).End(xlUp).Offset(1)   t.EntireRow.Copy p End Sub

関連するQ&A

  • マクロについて教えてください

    マクロ初心者です。 1日の各人の売り上げ数をシート1に入力しており、マクロのボタンを押すと シート2の同じ日の所に売り上げ数を飛ばそうと作っているんですが どうしてもうまくいきません。 シート1     5/25←日付     名前    売上個数     A君      59個     B君      60個     C君      67個 シート2             名前         A君  B君  C君   5月   25 水  59   60    67   ←25日の所にシート1の日付をみて、同じ日付の所に   26 木                  売上個数を飛ばしたい   27 金    どういうマクロを組んだらいいか教えてください。 よろしくお願いします。

  • エクセル マクロ VBA

    エクセルのマクロについて質問です。 『集計』というブックの『集計開始』というシートに     A列    B列     C列 1行目 見出し  見出し   見出し      (商品名)  (支店)  (個数)         2行目 コメント  空白     空白   3行目 空白   空白     空白 4行目 商品名  支店     個数  5行目 空白   空白     空白 6行目 空白   空白   コメント1 7行目 空白   空白     空白 8行目 空白   空白   コメント2 9行目以降    上記のデータ(見出しを除く)の繰り返し というデータが入っています。 B列の中に『AAA』という文字が含まれていたら、そのセルを空白に置換し、 含まれていなかったら、そこで処理がとまったりエラーが出たりしないで次のステッップへ進み、 C列の中に『B』という文字が含まれていたら、そのセルを空白に置換し、 含まれていなかったら、そこで処理がとまったりエラーが出たりしないで次のステッップへ進み、 (今は、手作業で編集→置換→検索する文字列の中に『B*』と入力し、 置換後の文字列を空白にしてすべて置換ということをやっています。)                            ABC列(データーの入っている行まで)の空白を含む行を一括削除し、 以下のような形にしたいのです。     A列    B列     C列 1行目 見出し  見出し   見出し      (商品名)  (支店)  (個数)         2行目 商品名  支店     個数  3行目 商品名  支店     個数          ・         ・ このようにするマクロ文はどのようになりますでしょうか?

  • VBAでオートフィルター コピー、ペースト

    VBA初心者です。 膨大なデータの計算に悩んでおります。 ご教授ください。 工場の各商品に使われている材料の使用量を各商品と個数を一括で入力し、計算させるエクセルシートを作成したいのですが、 1商品に使用されている材料は5~10種と不特定です。 シート1のA行に品番コード、B行に個数が入っており。(200列程度) シート2に各商品に使用されている材料のマスターがあります。 A行品番コード、B行材料名、C~Fが材料のサイズ指示。 シート1のA5(商品リストの先頭)をセレクトし商品コードをコピー→シート2の材料マスターに移りオートフィルターで商品に使われている材料を選択→該当した材料、サイズ(行A~H)をコピー※列数は商品によって異なるので該当した全てをコピー→シート1の空白(仮にE5とする)にペースト→シート1のA6をセレクトしそれをA行が空白になるまで繰り返す。 という感じで出来るのかと思うのですが、いかがでしょうか。何しろデータが膨大で計算させるにも時間がかかってしまいそうですが・・・ また別な方法で同様な処理ができれば、それも合わせてお願いします。 不備ご不明な点あれば教えてください。

  • VBA マクロを使って、コピー ソートしたいです

    画像でシート1の状態を、マクロでシート2のようにしたいです。 なにぶん初心者なので、効率のいいスクリプトがかけません。 よろしくお願いします。 条件としては シート1には大きく分けて3つ表がありますが、実際は10個あります。 10個目までシート2上でデータがつながっている感じです。 B,G,L列の連番はデータの個数です。 シート1にあるように、表ごとに入ってる個数はばらつきます。 シート2 のA列はシート1のB,G,Lの2行目の番号が入っています。

  • 繰り返し処理のマクロ

    下記のマクロをご教示いただけるでしょうか。 ①シートAのアクティブセルをコピーし、シートBのE1セルにペースト ②マクロ「結果反映」を実行 ➂シートAのアクティブセルを1行下に移動 ①から➂をアクティブセル=空白セルになるまで繰り返し

  • 繰り返しマクロの書き方

    例えば、D列4行目から30行目に先週の商品売り上げ個数を入力し、E列4行目から30行目に今週の商品売り上げ個数を入力します。D列とE列を比較しE列の売り上げが多ければ、N列4行目から30行目に上矢印マークを表示させ、売り上げが少なければ下矢印マークを表示させたいのです。これを毎月毎週繰り返したいのですが、マクロで出来るのでしょうか? どなたかお教えいただければ幸いです。よろしくお願いします。

  • マクロで可能ですか。

    1ヶ月の売上表があり、下記のように 日付毎の合計を、その日付の最終行に表示するのはマクロなどで可能でしょうか。 関数をセルにコピーしていたのですが、 最終行を探し、31日分コピーするのが不評です。 (下記では簡略化しておりますが、1日分の行数が何十行とあります。) もっと簡単に出来ないのかと言われ、ご教授いただけると幸いです。 Excel2010です。 誰でも使用可能なように、シート名に依存しない仕様だと有難いです。 ご協力宜しくお願い致します。 A列       B列    C列   D列 2014/11/01  商品A  \1000 2014/11/01  商品B  \1200  \2200 ←11/1の合計  2014/11/02  商品A  \1000  \1000 ←11/2の合計 2014/11/03  商品C  \1500  2014/11/03  商品B  \1200  \2700 ←11/3の合計 : : 2014/11/30  商品A  \1000 2014/11/30  商品A  \1000  \2000 ←11/30の合計

  • エクセルのマクロは超初心者のため、難しいことは全く分かりません。

    エクセルのマクロは超初心者のため、難しいことは全く分かりません。 よろしくお願いいたします。  m(_ _)m 同じbook内に複数のsheetがあります。 そのsheetは同じ型式のデータベースなのですが、sheetによって行が違います。 そのsheetのデータを一つのシートにコピー(一番上の先頭行はデータベースの名称でコピーしたくありません) をして一覧でまとめたいのですが、方法がわかりません。 sheet数が多いので、一つずつコピー→ペーストをするのが大変なので…どうぞよろしくお願いします。

  • マクロにおける按分について

    初めまして。 どうしてもマクロについて分からないので教えてください。例えば、商品に『りんご』と『みかん』があり、それぞれ3行ずつの内訳の個数が書いてあったとします。 りんごの1行目だけに金額15000円が入っていたとして、のこりのりんごの2行目と3行目にはブランクとします。トータルのりんごの個数を分母にして、分子にそれぞれの行の個数にして按分したとします。 端数がでたときには1行目にプラスします。 また次の行には『みかん』が書いてあり、りんごと同様にみかんだけで個数按分するといった仕組みにしたいと考えています。 どのような構文を書いてよいのかが分かりません。 教えてください。

  • VBA 隣のシートへ、コピーペーストするマクロ

    質問があります ボタンにマクロを登録して、押下するとシート3から特定の列4行のみ全てコピーして(100~500件で変動)、シート1の固定された開始地点からペーストするマクロです 以下のソースは文章で表現した通りのものとなっていますでしょうか? ------------------------------------------------------------------------------------ Sub ボタン登録コピーペースト () MsgBox "マクロを実行しました" Sheets(3).Select‘コピー元データ(シート3) Range("C:C,M:M,AE:AE,AF:AF").Select ‘4列の変動するデータすべて100~500件 ‘選択します Selection.Copy Sheets(1).Select‘コピー先データ Range("C70").Activate‘まず固定開始位置C70を選択する Selection.PasteSpecial Paste:=xlPasteValuesApplication.CutCopyMode = False ‘4列のデータ数百件すべてコピーする End Sub ------------------------------------------------------------------------------------

専門家に質問してみよう