2012-05-17 3 views
4

ReferenceИзменить название ActiveX Command Button с помощью VBA в Excel

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

Set shp = ActiveSheet.Shapes(Selection.Name) 

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

я в состоянии изменить caption name, но свойство 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 

ответ

7

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

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

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

Followup

Только что попробовал это, и это работает ...

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 

MORE Followup

Попробуйте

Set shp = ActiveSheet.Shapes(Selection.Name) 

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

Уведомление: Я изменил Str(NumNodes) на NumNodes?

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

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

СНАПШОТ

enter image description here

+0

Да. В результате имя кнопки команды остается как «CommandButton4». – Ehudz

+0

Я просто попробовал. Он изменяет имя только что созданной кнопки команды –

+0

Вы уверены, что это изменяет как ** NAME **, так и ** Caption **, а не только ** Caption **? В редакторе VB поле имени все еще говорит CommandButton4 после создания кнопки – Ehudz

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