|
>結合、結合の解除
とは、グループ化と解除の意味でしょーか ?
一応そうであるとして、まずシート上にフォームツールバーのボタンを
3個配置し、その全てに以下のマクロを登録して下さい。
次に数式バーを出して [Ctrl]キー を押しながら各ボタンを選択し、いったん
[Ctrl]キーを離して Caption の "ボタン ?" を選択、アイコンが I の形
になったら Caption の編集が出来るので、順に「グループ化」「グループ解除」
「削除」と変更します。そのとき最初の Caption とは違う番号の "ボタン ?"
が数式バーの左端に表示されるはずですから、それをメモしておいて↓のマクロ
の"ボタン 48","ボタン 49","ボタン 50"を書き換えて下さい。
Sub MyDrw()
Dim Drw As Object
Dim i As Long
Dim x1 As Single, y1 As Single
Dim x2 As Single, y2 As Single
Dim MyL As Single, MyT As Single
Dim MyW As Single, MyH As Single
Dim Cll As Variant
Dim Ary() As String
Cll = Application.Caller
If VarType(Cll) <> 8 Then Exit Sub
If TypeName(Selection) <> "Range" Then Exit Sub
If Selection.Count = 1 Then Exit Sub
If ActiveSheet.DrawingObjects.Count = 0 Then Exit Sub
With Selection
x1 = .Left: y1 = .Top
x2 = x1 + .Width: y2 = y1 + .Height
End With
For Each Drw In ActiveSheet.DrawingObjects
If TypeName(Drw) = "Button" Then GoTo NLine
MyL = Drw.Left: MyT = Drw.Top
MyW = MyL + Drw.Width: MyH = MyT + Drw.Height
If MyL >= x1 And MyT >= y1 And _
MyW <= x2 And MyH <= y2 Then
Select Case Cll
Case "ボタン 48"
ReDim Preserve Ary(i): Ary(i) = Drw.Name
i = i + 1
Case "ボタン 49"
If TypeName(Drw) = "GroupObject" Then Drw.Ungroup
Case "ボタン 50"
Drw.Delete
End Select
End If
NLine:
Next
If Cll = "ボタン 48" Then
ActiveSheet.DrawingObjects(Ary).Group: Erase Ary
End If
End Sub
作成はExcel2000ですが、こちらでテストした限りはうまくいきました。
|
|