電子書籍の厳選無料作品が豊富!

エクセルでマウスになぞった範囲だけを消すVBAはどう書くのでしょうか。小生
ActiveCell.Select
Selection.ClearContents

をやったら一個しか消えません。
またエクセルで 横に例えば マウスでA1、B1、C1、D1をなぞってコピーし 同じものを真下A2、B2、C2、D2のセルにペーストさせるにはVBAはどう書くのでしょうか。この場合マウスは同じシートでもその都度 場所が変わります。ご教授ください。

A 回答 (6件)

こんな感じでしょうか?



Sub クリア()
 Selection.ClearContents
End Sub

Sub 下にコピー()
 Selection.Copy Range(Cells(Selection.Row + 1, Selection.Column), Cells(Selection.Row + 1, Selection(Selection.Count).Column))
End Sub
    • good
    • 0
この回答へのお礼

完璧です! 有難うございました!!

お礼日時:2019/12/07 05:55

norakurotodorokiさん 初めまして



ご質問を実現するVBAのコードは、先の回答ですでにありますのが、ご質問者の望むものとは違うかもしれませんね?
それは、その都度変わるのが何なのかを明確にしていないからです。コピーはSelec範囲これは問題ないですが、
ペーストする位置が変わると解釈するのですか?
例では、1行下ですが10行下になる可能性や1行下の3列右からなどと変わるのですか?
あなたの問題を多くの方が同じように考えて、実施し、どのように伝えれば理解できるかまで考えてくれるのです。
うまく伝わっていないと思った時は、補足などを入れてくださいね。

勿論、一部分のVBAコードだと思います。
ちなみに、下記が自動記録で記録したマクロです。
Sub Macro1()
  Range("A1:D1").Select
  Selection.ClearContents

  Range("A1:D1").Select
  Selection.Copy
  Range("A2").Select
  ActiveSheet.Paste
  Application.CutCopyMode = False
End Sub

ご自身で調べ、ActiveCell.Select  Selection.ClearContents を
試された事も分かりますが、なんで、あと少し調べトライアルすれば出来るのにと、思っていしまいます。

>エクセルでマウス
とありますので、あえてアドバイスいたします。(今回、基本的におかしい?(個人的見解、悪意はありません)と思う事にアドバイスしています)

マウスで選択して行いたい動作は、マクロで実行するよりキーボードで
実施する方がはるかに容易く、VBAで行う合理性がありません。
マウスでなぞっているなら、Selection.ClearContentsは、キーボードのDeleteキーを押すだけで良いです。

コピーペーストに関しても
>マウスでA1、B1、C1、D1をなぞって、、
なら、
キーボードでCtrlキー+Cキー 
A2セルに移動(マウスでも矢印キーでもEnterキーでもTabキーでも設定に合わせ)
Ctrlキー+Vキーを押せばよいのです。

逆に他にも処理コードがあり、VBAでやるならSelectionでなくRangeオブジェクトを使用する方が合理的です。
また、マウス操作で実行したいなら、トリガーをPrivate Sub Worksheet_SelectionChange(ByVal Target As Range)や
Private Sub Worksheet_Change(ByVal Target As Range)などのシートイベントに記載する方が良いと思います。

追記:ショートカットキーを知らないことを想定して。。(そんな事ないですよね。すみません。)
しっかりショートカット操作を学習する事を勧めます。
https://office-hack.com/excel/shortcutkey-list/
    • good
    • 0

No.2です。



>マウスでA1、B1、C1、D1をなぞってコピーし・・・
前回はA1~D1限定のコードでしたが、範囲は不明なのですね。

範囲指定が1行限定であれば
Selection.Copy Selection(1).Offset(1)

複数行の場合は
Selection.Copy Cells(Selection(Selection.Count).Row + 1, Selection(1).Column)

としてみてください。

※ 飛び飛びのセル選択は考慮していません。
すなわち連続セルの範囲指定だという前提です。m(_ _)m
    • good
    • 0

No.3 の訂正



以下でも良かったみたいです。

Sub 下にコピー()
 Selection.Copy Cells(Selection.Row + 1, Selection.Column)
End Sub
    • good
    • 0

こんにちは!



>ActiveCell.Select
だと複数セルを選択していても、選択した中の単一セルだけが対象になるのだと思います。

↓のサイトが参考になるかも・・・
https://excel-excel.com/tips/vba_508.html

すなわち
>Selection.ClearContents
の1行だけで大丈夫のはずです。

次に
>マウスでA1、B1、C1、D1をなぞってコピーし 同じものを真下A2、B2、C2、D2のセルにペーストさせるには・・・

コピー&ペーストではなく、値の代入になりますが、
Range("A2:D2").Value = Range("A1:D1").Value

どうしてもコピー&ペーストしたい場合は
Range("A1:D1").Copy Range("A2")

といった感じでしょうか。m(_ _)m
    • good
    • 0

「マウスになぞった範囲」とは「マウスをドラッグして選択状態になった部分」の事でしょうか?

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!