【问题标题】:VBA to get selected shape name in ComboboxVBA在组合框中获取选定的形状名称
【发布时间】:2020-03-21 08:31:39
【问题描述】:

我是 VBA 新手。我的工作表中的形状很少。 I want to get the name of shape to appear in combobox and character name in another Combobox, when any particular shape is selected.所以我可以重命名该形状并链接到特定的 excel 列。

我已尝试关注。

With Selection
    ActiveSheet.ComboBox1.Value = ActiveSheet.Shapes(Application.Caller).Name
End with

不确定在哪里分配上述代码。

我尝试将上述代码分配给以 .onaction 作为宏的形状,它可以工作,但无法进一步编辑宏分配的形状(出于设计目的)。

如果我可以删除选定的形状,那就太好了。

提前谢谢你。

【问题讨论】:

标签: excel vba


【解决方案1】:

您可以将代码用于任何形状,并且您可以随时更改代码,但是分配一个宏,单击时将不会选择形状...它成为一种控件。

强制选择的情况除外:

Debug.Print ActiveSheet.Shapes(Application.Caller).Name
shW.ComboBox1.value.Shapes(Application.Caller).Select

您可以从右键单击上下文(在图表底部)更改代码并选择“分配宏... -> 编辑”。

您可以使用下面的代码找到选定的形状:

Sub testSelectedShape()
   Dim shW As Worksheet, sh As Object, selSh As Object
   Set shW = ActiveSheet
   If TypeName(Selection) <> "Range" Then
      Set selSh = Selection
      Set sh = shW.Shapes(selSh.Name)
      Debug.Print selSh.Name
      shW.ComboBox1.value = selSh.Name
  End If
End Sub

您可以使用 sh.Delete 简单地删除它...

【讨论】:

  • 感谢您的友好回复。但我在标签设计中使用添加形状按钮添加和删除了动态形状。并且对于每种形状,除非形状是固定的而不是动态的,否则不可能使用上述代码。我们可以使用工作表形状选择更改事件触发上述代码吗?任何解决方法?
  • 可能是的,但现在我在开车。我会在七八小时后回到家……
  • 好的,。将等待您的回复。安全驾驶。
  • 刚刚测试了你开始的两行代码。这帮助我管理它。但是您开始的第二行代码带有错误“需要对象”。解决了它。 ActiveSheet.Shapes(Application.Caller).Select ActiveSheet.ComboBox1.Value = ActiveSheet.Shapes(Application.Caller).Name 我将为每个带有 .onkey 的 Shapes.AddShape 分配这一行宏。 = "宏名"
  • 感谢您的时间和支持。
猜你喜欢
  • 1970-01-01
  • 2022-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-02
  • 2019-10-07
  • 1970-01-01
相关资源
最近更新 更多