3 сценария ios. Выберите.
Если вы не уверены, что кнопки существуют, а также не уверены, сгруппированы они или нет, попробуйте это.
Logi c
Если кнопки уже добавлены в рабочие таблицы, используйте эту логику c
- Проверьте, существуют ли «Button_01», «Button_02»
- Проверьте, являются ли они частью группы
- Если нет, сгруппируйте и переместите
- Если они таковы, получите имя сгруппированной фигуры и переместите
Код
Option Explicit
Sub Move_Group_of_Buttons()
Dim rng As Range, ws As Worksheet
Dim shpA As Shape, shpB As Shape, shp As Shape, ButtonList As Shape
Dim PartOfGroup As Boolean
Dim GrpName As String
Dim i As Long
'~~> Loop through the worksheets
For Each ws In ThisWorkbook.Worksheets
With ws
'~~> set your range
Set rng = .Range("F15:F16")
'~~> Check if buttons with that name exists
On Error Resume Next
Set shpA = .Shapes("Button_01")
Set shpB = .Shapes("Button_02")
On Error GoTo 0
If shpA Is Nothing Or shpB Is Nothing Then
Debug.Print "Shapes not found in sheet " & ws.Name
Else
PartOfGroup = False
GrpName = ""
'~~> Check if the buttons are part of a group
For Each shp In .Shapes
If shp.Type = msoGroup Then
For i = 1 To shp.GroupItems.Count
If shp.GroupItems(i).Name = "Button_01" Or _
shp.GroupItems(i).Name = "Button_02" Then
PartOfGroup = True
GrpName = shp.Name
Exit For
End If
Next i
End If
Next shp
'~~> If part of group
If PartOfGroup = True Then
With .Shapes(GrpName)
.Top = rng.Top
.Left = rng.Left
.Width = rng.Width
.Height = rng.Height
End With
Else '<~~ If Not
Set ButtonList = .Shapes.Range(Array("Button_01", "Button_02")).Group
With ButtonList
.Top = rng.Top
.Left = rng.Left
.Width = rng.Width
.Height = rng.Height
End With
End If
End If
End With
Next ws
End Sub
Если кнопки существуют и уже сгруппированы и имеют имя Button_Group
, попробуйте это
Option Explicit
Sub Move_Group_of_Buttons()
Dim rng As Range, ws As Worksheet
Dim ButtonList As Shape
'~~> Loop through the worksheets
For Each ws In ThisWorkbook.Worksheets
With ws
'~~> set your range
Set rng = .Range("F15:F16")
Set ButtonList = .Shapes("Button_Group")
With ButtonList
.Top = rng.Top
.Left = rng.Left
.Width = rng.Width
.Height = rng.Height
End With
End With
Next ws
End Sub
Если кнопки существуют и не сгруппированы , попробуйте это
Option Explicit
Sub Move_Group_of_Buttons()
Dim rng As Range, ws As Worksheet
Dim ButtonList As Shape
'~~> Loop through the worksheets
For Each ws In ThisWorkbook.Worksheets
With ws
'~~> set your range
Set rng = .Range("F15:F16")
Set ButtonList = .Shapes.Range(Array("Button_01", "Button_02")).Group
With ButtonList
.Top = rng.Top
.Left = rng.Left
.Width = rng.Width
.Height = rng.Height
End With
End With
Next ws
End Sub