プロが教えるわが家の防犯対策術!

つい最近マクロを触り始めたものです。
添付のような「行移動ボタン(↑ボタンと↓ボタン)」を沢山作りたいのですが、
下記の手順を沢山行わないといけないでしょうか?

------
≪↑ボタンの場合≫
マクロの記録開始

1行全体選択、Shiftで1つ上の行に挿入

マクロの記録終了

任意のオブジェクトにマクロを登録
------

沢山作りたくてボタンをコピペしても、
マクロを登録する際に移動させた行が動くばかりで困ってしまいました。

調べても上下ボタンの解説記事などは見当たらず…

VBAを触れば可能なのでしょうか?
だとしたらお手柔らかに教えていただきたいです…!

宜しくお願いいたします。

「【Excel】行移動ボタンを沢山作りたい」の質問画像

A 回答 (2件)

はじめまして


VBAやボタンの使い方は置いときまして
ご質問の内容を推測すると下記のような感じで出来ると思います。
1行目セル内にフォームボタンを図の様に設置して

1行目のボタン↑に
Sub UE()  '上に1つ移動
Dim r As Long
On Error Resume Next
  r = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
  If r = 1 Then Exit Sub
  Rows(r).Cut
  Rows(r - 1).Insert
End Sub
を登録

1行目の↓ボタンに
Sub SITA() '下に1つ移動 ?ActiveCell.Row
Dim r As Long
On Error Resume Next
  r = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
  Rows(r).Cut
  Rows(r + 2).Insert
End Sub
を登録

セルをコピー

下の必要部分まで選択し Enterで貼り付け
ただ、オブジェクトをこのように沢山配置するのは、私はあまりしません。
    • good
    • 1
この回答へのお礼

Qchan1962さん、はじめまして。早速のご回答ありがとうございます…!
ご提案いただいた通りの内容で、ばっちり行移動ボタンを複数作成することができました!!

> ただ、オブジェクトをこのように沢山配置するのは、私はあまりしません。
こちらの理由として、
「必要になる場面が少ない」または「ごちゃごちゃするのが好ましくない」…あたりでしょうか?
普段使用しているシステムを題材に組んでいるところなので、私も今後このような配置をすることになるかは分かりませんが…w

追記にもベストアンサーを割り振れたら良かったのですが、こちらの方で選ばせていただきます。

お礼日時:2020/04/18 12:35

追記します


>お手柔らかに教えていただきたいです…!
マクロの記録だと行番号などが記録される為、汎用性に欠けます。
その為、そのマクロを使いまわすと対象が絞られてしましますので、新たに記録してり
変数などを活用して汎用性を補います。

示したコードは、参考図で沢山のボタンを使用する事から
ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row で
ボタンが設置されている行番号を取得しています。
つまり、ボタン設置場所に依存する形です。

通常?、下記のような使い方が多いかも知れません。
Sub SITA() '下に1つ移動 
Dim r As Long
On Error Resume Next
r = ActiveCell.Row ’選択されているセルの行
Rows(r).Cut
Rows(r + 2).Insert
End Sub
選択セルに依存している形です。



Rows(r).Cut は行を切り取り
Rows(r + 2).Insert 切り取った行を挿入
UEでの
If r = 1 Then Exit Sub は、1行目の上には挿入できないので処理をやめています。
On Error Resume Next 必要ないかも知れませんが、念のため エラー発生時に無視して次の行に進む
ボタンに同じマクロを登録すれば、その登録を含めコピーぺが可能ですね。
参考まで
    • good
    • 1
この回答へのお礼

こちらの追記の方でも、
親切丁寧にご解説下さりありがとうございます!

今まで怖くて触れておりませんでしたが、VBAのところも初めて編集できました。
キッカケというか背中を押して下さり感謝です。

今回教えていただいたことを参考に今後も触っていこうと思います。
ありがとうございました!

お礼日時:2020/04/18 12:40

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