2015-07-03 3 views
1

Если выбранный диапазон состоит из 1 ячейки, тогда выберите все фигуры на листе, а затем выберите фигуры в диапазоне. Это «еще» часть, которая вызывает у меня проблемы. Я могу выбрать одну форму, но не все формы в диапазоне ...Как выбрать несколько фигур на основе диапазона?

Public Sub ShapeSelection() 
Dim Sh As Shape 
On Error Resume Next 

If Selection.Rows.count * Selection.Columns.count = 1 Then 
    ActiveSheet.Shapes.SelectAll 
Else 
    Application.ScreenUpdating = False 
    With ActiveSheet 
     For Each Sh In .Shapes 
      If Not Application.Intersect(Sh.TopLeftCell, .Range(Selection.Address)) Is Nothing Then 
       Sh.Select 
      End If 
     Next Sh 
    End With 
    Application.ScreenUpdating = True 
End If 

End Sub 

ответ

1

Попробуйте это. Обратите внимание на включение слова «False»:

Public Sub ShapeSelection() 
Dim Sh As Shape 
Dim selectedOne As Boolean 
On Error Resume Next 

If Selection.Rows.count * Selection.Columns.count = 1 Then 
    ActiveSheet.Shapes.SelectAll 
Else 
    Application.ScreenUpdating = False 
    With ActiveSheet 
     For Each Sh In .Shapes 
      If Not Application.Intersect(Sh.TopLeftCell, .Range(Selection.Address)) Is Nothing Then 
       If selectedOne = False Then 
        Sh.Select 
        selectedOne = True 
       Else 
        Sh.Select(False) 
       End If 
      End If 
     Next Sh 
    End With 
    Application.ScreenUpdating = True 
End If 

End Sub 
+0

PERFECT! Это было именно то, что было необходимо. Спасибо!! – jony

Смежные вопросы