Когда вы вставляете изображение в лист Excel, вы автоматически получаете изображение 1, изображение 2 и т.д. ...... У меня есть функция, когда выбрано изображение, чтобы обвести его черной рамкой. Проблема в том, что, если у меня есть два изображения на рабочем листе с именем Рисунок 1, функция не будет знать, какое изображение 1 обвести рамку, таким образом, может поставить рамку вокруг неправильно выбранного изображения.

Вот мой код, чтобы поставить границу на изображение:

Private Function AddImageBorder(WhichSheet As String)

With ActiveWorkbook.Sheets(WhichSheet).Shapes(Selection.Name)
    .Line.Weight = 5
    .Line.Visible = msoTrue
End With

Конечная функция

1 ответ1

0

Я думаю, что простым решением этого было бы переименовать ваши изображения. То, как вы получите два "Picture1", вне меня, мне пришлось переименовать один в VBA. В любом случае, вот способ нумерации ваших фигур, чтобы никто не перекрывал

Sub NumberShapes()
    Dim shp As Shape
    Dim i As Long
    i = 1
    For Each shp In ActiveSheet.Shapes
        shp.Name = "Picture" & i
        i = i + 1
    Next
End Sub

Лично я бы сделал это по-другому, определив, что это в первую очередь.

Option Explicit

Public Sub NumberShapes()
    Dim shp As Shape
    Dim i As Long
    i = 1
    For Each shp In ActiveSheet.Shapes
    If shp.Type = msoPicture Then
        shp.Name = "Picture" & i
        i = i + 1
    ElseIf shp.Type = msoChart Then
        shp.Name = "Chart" & i
        i = i + 1
    ElseIf shp.Type = msoTextBox Then
        shp.Name = "Textbox" & i
        i = i + 1
    End If
    Next
End Sub

С этим решением вы можете решить, как они называются, основываясь на их типе .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .