0

我在 Excel 工作表中有一个下拉列表,其中有一个分配的宏,该宏被写入返回下拉列表名称但徒劳无功

Private Sub Cmb()
   'cmb is the assinged macro name

    Workbooks("Test2").Worksheets("Sheet3").Activate
    MsgBox ActiveSheet.Shapes(Application.Caller).Name

End Sub

它正在返回the item with specified name wasn't found

请帮我解决这个问题。我是 excel 的初学者。因此,如果包含详细说明,将不胜感激

4

1 回答 1

1

既然您提到要为 Combobox 分配一个宏,那么它肯定是一个 Form Control Combobox,而不是一个 activeX 控件。因此 Application.Caller 肯定会返回您从中调用宏的组合框的名称。你试过这个:

MsgBox "The name of the combobox is " & Application.Caller

编辑:收到电子表格后。

所以基本上:有两个错误:

 Workbooks("Test2").Worksheets("Sheet3").Activate

您不需要上述行,因为当您单击下拉菜单时,所需的工作表将始终处于活动状态。宏中的主要错误即将到来,因为 Test2 不是工作簿。使用工作簿(“Test2.xlsm”)............

然后我们来到下一行:

你用过这个:

ActiveSheet.Shapes(Application.Caller).Name

现在 Name 属性返回一个字符串。因此,您需要将该值存储到变量中。错误来了,因为您没有将它存储在任何变量中。用这个:

Dim shpName as String

shpName = ActiveSheet.Shapes(Application.Caller).Name

错误将被删除。我还把电子表格发回给你。如果你有问题,请告诉我们。

谢谢,V

于 2013-09-02T13:24:18.293 回答