从ComboBox获取一个值
我通过VBA代码创build了一个combobox。
Sub CreateFormControl() ActiveSheet.DropDowns.Add(0, 0, 100, 15).Name = "ComboBox1" ActiveSheet.Shapes("ComboBox1").ControlFormat.RemoveAllItems Dim i As Integer With ActiveSheet.Shapes("ComboBox1").ControlFormat For i = 1 To 25 .AddItem i Next i End With ActiveSheet.Shapes.Range(Array("ComboBox1")).Select Selection.OnAction = "ComboBox1_Change" Range("B2").Select End Sub
这里的问题是,当我在ComboBox
框中select一个项目,它给了我一个
运行时错误424.对象需要
它不显示选定的值。 我也试图将我的声明Sub CreateFormControl()
更改为Public Sub CreateFormControl()
,但它仍然不起作用。
Sub ComboBox1_Change() MsgBox (ComboBox1.Value) 'The error is here End Sub
尝试下面的代码,尝试用一个合格的Worksheet
replaceActiveSheet
,如Worksheets("YoutSheetName")
。
Sub ComboBox1_Change() Dim ws As Worksheet Dim MyDropDown As DropDown ' try not to use ActiveSheet, replace "Sheet1" with your sheet's name Set ws = Worksheets("Sheet1") ' ActiveSheet Set MyDropDown = ws.Shapes("ComboBox1").OLEFormat.Object ' <-- set my Object with "ComboBo1" drop-down MsgBox MyDropDown.List(MyDropDown.ListIndex) '<-- display the value of the selected item End Sub
下面是一个“干净”的方式来添加一个新的DropDown
到Worksheet
而不使用ActiveSheet
, Select
和Selection
(只使用完全限定的对象)。
Sub CreateFormControl代码
Option Explicit Sub CreateFormControl() Dim MyDropDown As DropDown Dim i As Long ' set the drop-down object to the new created drop-down (replace "Sheet1" with your sheet's name) Set MyDropDown = Worksheets("Sheet1").DropDowns.Add(0, 0, 100, 15) ' modify the drop-down properties With MyDropDown .Name = "ComboBox1" .RemoveAllItems For i = 1 To 25 .AddItem i Next i .OnAction = "ComboBox1_Change" End With End Sub