Вопрос по excel, command, vba – Изменить имя кнопки ActiveX с помощью VBA в Excel

4

Ссылка

Я пытаюсь изменить свойство имени командных кнопок ActiveX с помощью VBA с помощью следующего кода:

Set shp = ActiveSheet.Shapes(Selection.Name)

With shp.OLEFormat.Object
    .Object.Caption = "Node" & Str(NumNodes)
    .Name = "Node" & Str(NumNodes)
End With

Я могу изменить название заголовка, но свойство name нельзя изменить с помощью приведенного выше кода. Мне нужно найти способ объединить строку с int (NumNodes) для свойства name.

UPDATE

Это полная подпрограмма, которая копирует командную кнопку и вставляет ее в определенную ячейку. Свойства, такие как имя и заголовок, также изменяются при создании кнопки.

Public Sub Node_Button_Duplication()
'
'Comments: Copies and pastes Node 1's button to the appropriate column

Dim shp As Shape

' Copy Node 1 button and paste in appropriate location

    ActiveSheet.Shapes("CommandButton1").Select
    Selection.Copy
    Cells(5, 10 + 7 * (NumNodes - 1) - 1).Select
    ActiveSheet.Paste
    Selection.ShapeRange.IncrementLeft 47.25
    Selection.ShapeRange.IncrementTop -13.5


    Set shp = ActiveSheet.Shapes(Selection.Name)

    With shp.OLEFormat.Object
        .Object.Caption = "Node" & Str(NumNodes)
        .Name = "Node" & Str(NumNodes)
    End With

End Sub

Ваш Ответ

1   ответ
7

Это то, что ты пытаешься?

Set shp = ActiveSheet.Shapes(Selection.Name)
shp.Name = "Node" & Str(NumNodes)

With shp.OLEFormat.Object
    .Object.Caption = "Node" & Str(NumNodes)
End With

СЛЕДОВАТЬ З

Просто попробовал это, и это работает ...

Public Sub Node_Button_Duication()
    Dim shp As Shape
    Dim NumNodes As Long

    ActiveSheet.Shapes("CommandButton1").Select
    Selection.Copy
    Cells(5, 10 + 7 * (NumNodes - 1) - 1).Select
    ActiveSheet.Paste
    Selection.ShapeRange.IncrementLeft 47.25
    Selection.ShapeRange.IncrementTop -13.5

    NumNodes = 5

    Set shp = ActiveSheet.Shapes(Selection.Name)
    shp.Name = "Node" & Str(NumNodes)

    With shp.OLEFormat.Object
        .Object.Caption = "Node" & Str(NumNodes)
    End With
End Sub

ПОДРОБНЕЕ

Попробуй эт

    Set shp = ActiveSheet.Shapes(Selection.Name)

    With shp.OLEFormat.Object
        .Object.Caption = "Node" & Str(NumNodes)
        .Name = "Node" & NumNodes
    End With

Обратите внимание, я изменилStr(NumNodes) вNumNodes?

Имена элементов управления ActiveX не могут иметь пробелы

Попробуй сейчас

СНАПШОТ

Ах, у тебя проблема;) Обновление кода выше. Siddharth Rout
Ты уверен, что это меняет обНАЗВАНИ а также Подпись и не только Подпись? В редакторе VB поле имени все еще говорит CommandButton4 после создания кнопки Ehudz
Я только что попробовал. Изменяет название вновь созданной командной кнопки Siddharth Rout
Такое простое исправление. Почему я не попробовал это! Еще раз спасибо за помощь! Очень признателен Ehudz
Да. В результате имя кнопки команды остается как «CommandButton4». Ehudz

Похожие вопросы