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

A1からA10までデータが入力されていたとします。
その中の任意のセル(例えばA3)をクリックし、マクロを登録した上ボタンをクリックしたらA3とA2の値が入れ替わり、もう一度クリックしたらA2とA1が入れ替わる。
逆にマクロを登録した下ボタンをクリックしたらA3とA4の値が入れ替わり、もう一度クリックしたらA4とA5の値が入れ替わるようなマクロを作りたいです。

ご存知の方、教えて下さい。
よろしくお願いします。

A 回答 (3件)

ActiveX コントロールのスピンボタンに取り付けてください。



'//ActiveX コントロールを付けたシートモジュール
Const L As Long = 1
Const U As Long = 10
Private Sub SpinButton1_SpinUp()
 Dim t As Variant
 Application.ScreenUpdating = False
 If ActiveCell.Row <= L Or ActiveCell.Column <> 1 Then Exit Sub
 If ActiveCell.Value = "" Then Exit Sub
 t = ActiveCell.Value
 ActiveCell.Value = ActiveCell.Offset(-1).Value
 ActiveCell.Offset(-1).Value = t
 ActiveCell.Offset(-1).Select
 Application.ScreenUpdating = True
End Sub

Private Sub SpinButton1_SpinDown()
 Dim t As Variant
 Application.ScreenUpdating = False
 If ActiveCell.Row >= U Or ActiveCell.Column <> 1 Then Exit Sub
 If ActiveCell.Value = "" Then Exit Sub
 t = ActiveCell.Value
 ActiveCell.Value = ActiveCell.Offset(1).Value
 ActiveCell.Offset(1).Value = t
 ActiveCell.Offset(1).Select
 Application.ScreenUpdating = True
End Sub
    • good
    • 0

Application.Onkeyでそれぞれのマクロを設定すればできますけど



「セルを Shift +ドラッグで入れ替える」で何が問題なのでしょう。

「セルをクリックして上キーを押す」とそう大差はないように思い
ますけど。
    • good
    • 0

上に行くマクロを書いてみました。


下に行くマクロは、質問者さんの方で、作ってみて下さい。

Sub 上へ()
If Intersect(Range("A2:A10"), Selection) Is Nothing Then Exit Sub
If Selection.CountLarge = 1 Then
Selection.Cut
Selection.Offset(-1).Select
Selection.Insert Shift:=xlDown
End If
End Sub
    • good
    • 0

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