|
▼やっちん さん:ありがとうございます。そうですね。
VBAはドラッグしたときにイベントは発生しませんよね。
判定ボタンを作っていちいち押すのは面倒です。
何も考えずに作ってしまいました。
アドバイスあったら、お願いします。
少し変えました。
↓
Sub check()
'3つのオブジェクトの位置と大きさを求める
Dim X(1 To 3) As Integer 'X座標
Dim Y(1 To 3) As Integer 'Y座標
Dim W(1 To 3) As Integer '幅
Dim H(1 To 3) As Integer '高さ
Dim i As Integer
Dim kasanari As Boolean
For i = 1 To 3
X(i) = ActiveSheet.Shapes("thing" & i).Left
Y(i) = ActiveSheet.Shapes("thing" & i).Top
W(i) = ActiveSheet.Shapes("thing" & i).Width
H(i) = ActiveSheet.Shapes("thing" & i).Height
Next i
'重なり方の判定
If Y(1) < Y(2) + H(2) Then
If Y(1) + H(1) > Y(2) Then ← + H(1)はいらない?
If X(1) < X(2) + W(2) Then
If X(1) + W(1) > X(2) Then ← + W(1)はいらない?
kasanari = True
End If
End If
End If
End If
'重なっているとき
If kasanari Then
With ActiveSheet.Shapes("thing1")
.Top = Y(2) ← .Top = Y(2) + 1 に変更
.Left = X(2) ← .Left = X(2) + 1 に変更
End With
'重なっていないとき
Else
With ActiveSheet.Shapes("thing1")
.Top = Y(3)
.Left = X(3)
End With
End If
End Sub
|
|