• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:同じ行の内容をコピーするマクロが作れません。。)

同じ行の内容をコピーするマクロが作れません。

このQ&Aのポイント
  • 同じ行の内容をコピーするマクロを作成する方法について教えてください。
  • E列~I列には主の誕生日が入力されており、同じ行には主の家族の生年月日も入力されています。
  • 主の家族の生年月日を再度入力せずに、マクロを使用してデータをコピーする方法を教えてください。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! 外していたらごめんなさい。 「マクロボタン」ではなく、セルをダブルクリックの操作方法になりますが・・・ 画面左下にある操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので、 ↓のコードをコピー&ペーストして、Q列またはW列のセルをダブルクリックしてみてください。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim i As Long If Target.Column = 17 Or Target.Column = 23 Then i = Target.Row Cancel = True Range(Cells(i, 5), Cells(i, 9)).Copy Destination:=Target End If End Sub ※ 参考になれば良いのですが、最初に書いたように的外れならごめんなさいね。m(_ _)m

uragon
質問者

お礼

ご回答ありがとうございます! こ、これはすごいです・・ どうしてすごいかというといちいちボタンを押さなくてもダブルクリックするだけで コピーできてしまうからです・・ If Target.Column = 17 Or Target.Column = 23  ・・・・ 続けて自分がターゲットに したいものを追加さえすればコピーできちゃう優れものですね。 感動しました。ありがとうございました!

その他の回答 (3)

回答No.4

つまり、 「現在カーソルがあるセルから右側に、同じ行のE~I列の値をコピーする」 であってますかね? であれば・・・・ Sub ボタン1_Click()   Dim lngCOLUMN  As Long   Dim lngROW   As Long      lngCOLUMN = Selection.Column   lngROW = Selection.Row      With ActiveSheet     .Cells(lngROW, lngCOLUMN + 0).Value = .Cells(lngROW, 5).Value     .Cells(lngROW, lngCOLUMN + 1).Value = .Cells(lngROW, 6).Value     .Cells(lngROW, lngCOLUMN + 2).Value = .Cells(lngROW, 7).Value     .Cells(lngROW, lngCOLUMN + 3).Value = .Cells(lngROW, 8).Value     .Cells(lngROW, lngCOLUMN + 4).Value = .Cells(lngROW, 9).Value   End With End Sub でいかがでしょう。

uragon
質問者

お礼

ご回答ありがとうございます! 「現在カーソルがあるセルから右側に、同じ行のE~I列の値をコピーする」 ま、まさにその通りです(;´∀`) Cor_moriyanさんのコードを埋め込むとどこの箇所でも同じ行であればボタンを押すと コピーできました。追加で書かなくてもいいという意味ですごく助かりました! ありがとうございました(^^ゞ

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.3

一例 Sub ボタン1_Click() Select Case Selection.Column Case 17 Range("Q" & Selection.Row) = Range("E" & Selection.Row) Range("R" & Selection.Row) = Range("F" & Selection.Row) Range("S" & Selection.Row) = Range("G" & Selection.Row) Range("T" & Selection.Row) = Range("H" & Selection.Row) Range("U" & Selection.Row) = Range("I" & Selection.Row) Case 23 Range("W" & Selection.Row) = Range("E" & Selection.Row) Range("X" & Selection.Row) = Range("F" & Selection.Row) Range("Y" & Selection.Row) = Range("G" & Selection.Row) Range("Z" & Selection.Row) = Range("H" & Selection.Row) Range("AA" & Selection.Row) = Range("I" & Selection.Row) End Select End Sub

uragon
質問者

お礼

ご回答ありがとうございます! ボタンつくれました!あとはRange・・を追加していくだけですね。 感謝いたします。m(__)m

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

(1)1人の誕生日の年月日を「別セルに入れているがエクセルでは、日付は1セルに日付シリアル値に入れろ (2)質問の書き方」がやこしいが、VLOOKUP関数でも出来る問題ではないのか。 マクロ作るまでもない。またVBA(マクロでなくエクセルVBAということ)のコードの中でもVLOOKUP関数は作れる。 (3)もう少し例を増やして、説明のこと。 (4)>さらに同じ行には主の家族の生年月日を入力するケースもあるため、同じ内容のセルが 同じ行とは?同じ列(群(F-I列)のこと? >家族の生年月日を・・同じ内容のセルが複数あります どういうこと? 質問の情況が判りにくい。文章表現に注意のこと。 >Wのセルを選択しているときに、W列~AA列に "英国 花子"から"23"までのデータコピーするといったマクロボタンを作りたいのですが 南下初歩的なことじゃないのか。コピーして貼り付けしたら === マクロの記録というのがあるので、それを取り、他の場合には、何処を同変更したら良いのか考えること。 初心者がマクロの記録も取ってないようなのが、どうして?と思う。 そこで判らなければ質問やむなしだろうが。

uragon
質問者

お礼

ご回答ありがとうございます! (1について これはすでに完成しているエクセルファイルを元にマクロが組み込まれています。       だからこのあえてこの制約のもとで質問させていただきました・・ (2)について 言葉の使い方のご指摘ありがとうございます!今後は使い方に気をつけます。        コードの中でも使えることは知りませんでした・・ (3)について 例がわかりづらくて申し訳ないです。ただあまり例を増やしすぎると文章が長くなり        余計に誤解を招いたらまずいと思ってなるべくシンプルに書きました。が、やはり       余計に分かりづらくなりました。申し訳ありません。 (4)について F-I列に入力された各々の行を横に見ていくという意味です。すみません。これまた        言葉の使い方がおかしいため理解されなかったのだと反省いたします。        あとコピーして貼り付けろとのことですが、ここには敢えて書いてませんが膨大な        量なのです。いちいちコピーして貼り付けていたら少しの時間の差ではありますが        大きく作業時間を食ってしまうのです。だから質問させていただきました。        あと、マクロの記録をしてもうまくいきませんでした。 ご指摘ありがとうございました!

関連するQ&A