3個の例です。まず、3個の図形ともシートに正確に配置します。
myZukeiPotを標準モジュールに貼り付けボタンを貼り付けたシートから実行します。各図形の縦横位置がA1、B1、C1・・・に出力されます。(名前、縦位置、横位置)
この中の動かしたい図形の情報を記録しておきます。
'位置を調べる
Public Sub myZukeiPot()
Dim shp As Shape '四角形
Dim cot As Integer 'カウンタ
For Each shp In ActiveSheet.Shapes
cot = cot + 1
Range("A" & cot) = shp.Name '名前
Range("B" & cot) = shp.Top '上端位置
Range("C" & cot) = shp.Left '左端位置
Next
End Sub
移動を連続させるボタンとA、B、C位置に動くボタンを配置します。計4個。順にCommandButton1,2,3,4です。
下記のマクロを標準モジュールに貼り付け、「***縦・横位置の登録***」の箇所を上記で記録しておいた数値にします。順序は決めて下さい。
'四角形を動かす(例:四角形は3個)
Public Sub ShapeMove(Optional ShiteiNo)
Const ShpNum = 3 '四角形の個数
Dim ShpName As String '四角形の名前
Dim ShpTop(3), myShpTop As Double '動かす各位置、表示位置
Dim ShpLeft(3), myShpLeft As Double '動かす各位置、表示位置
ShpTop(1) = 71.25: ShpLeft(1) = 165.75 '***縦・横位置の登録***
ShpTop(2) = 98.25: ShpLeft(2) = 201
ShpTop(3) = 125.25: ShpLeft(3) = 276
Dim ct As Integer 'カウンタ
Dim myShpIdx As Integer '四角形の順序
With ActiveSheet
If IsMissing(ShiteiNo) Then 'ぐるぐる回る
myShpTop = .Shapes("myText1").Top '今あった位置
myShpLeft = .Shapes("myText1").Left '今あった位置
myShpIdx = 0
For ct = 1 To ShpNum
If myShpTop = ShpTop(ct) And myShpLeft = ShpLeft(ct) Then
myShpIdx = ct '何番目か探す
End If
Next
'次の場所にする
myShpIdx = myShpIdx + 1
If myShpIdx > ShpNum Then
myShpIdx = 1
End If
Else '位置指定
myShpIdx = ShiteiNo
End If
.Shapes("myText1").Top = ShpTop(myShpIdx)
.Shapes("myText1").Left = ShpLeft(myShpIdx)
End With
End Sub
ボタンを配したシートモジュールに下記マクロを貼り付けます
Private Sub CommandButton1_Click() 'ぐるぐる回る
ShapeMove
End Sub
Private Sub CommandButton2_Click() 'Aの位置(Aに対応して「1」)
ShapeMove 1
End Sub
Private Sub CommandButton3_Click() 'Bの位置(Bに対応して「2」)
ShapeMove 2
End Sub
'
Private Sub CommandButton4_Click() 'Cの位置(Cに対応して「3」)
ShapeMove 3
End Sub
長くなりました。
お礼
完璧です!!!!!こりゃすごい! 感動です! ありがとうございました。