• ベストアンサー

マクロでコピーです

三つの記述を教えてください。 1、A列に氏名、B列に住所が有ります。 C列には氏名、住所をコピーすべきものを表す1が表示されています。 コピー先はD列氏名、E列住所です。 このD列、E列には上の方から順次詰めてコピーされるようにします。 これで、A列氏名をダブルクリックしたら、その氏名、住所が共にD列、E列にコピーされる。 2、C列に立っている1をダブルクリックで上記のようにするには。 3、イベントではなく、C列1を基準として上記のようにするには。 以上、教えて下さいますようよろしくお願いします。

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

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

1、2はワークシートのダブルクリックイベントを利用して可能です。 下のコードのIf以下の条件式の前半が1の条件に、後半が2の条件に該当しますので、片方の条件のみの時は一方を消せばよいです。 例では、どちらの条件(A列のクリックでも、C列のクリックでも)でもD、E列にコピーされます。 クリックの位置のチェックは行っていますが、重複などのチェックは行っていません。 3は、C列で1のあるものを全てD、E列に書き写すという意味でしょうか? その場合は、C列をループで探して値が1の時だけコピーをすれば良いので、「ループ」が違うだけで後は同様ですね。 これは、応用編ということで、チャレンジしてみてください。 ----サンプル----- Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim rt, r  rt = Target.Row  r = Range("D65536").End(xlUp).Row + 1  If Cells(r - 1, 4) = "" Then r = r - 1  If ((Target.Column = 1) And (Cells(rt, 1).Value <> "")) _   Or ((Target.Column = 3) And (Target.Value = 1)) Then '**ここが判定の条件式     Cells(r, 4).Value = Cells(rt, 1).Value     Cells(r, 5).Value = Cells(rt, 2).Value  End If  Cancel = True End Sub

hoshi7777
質問者

お礼

MSのエクセルです。本当にありがとうございました。大変助かりました。

その他の回答 (1)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

#1です。 書き漏らしましたが、回答はMSのエクセルのマクロのご質問だと仮定してお答えしています。 違っていましたら、まったくの見当ハズレですので忘れてください。

関連するQ&A