Excel VBAcombobox

我有一个用户窗体中的combobox,我正在寻找一种方法来findselect是什么,以便我可以利用它作为一个string,并将其传递到工作表上的单元格。 例如:

Private Sub Filter_Click() 'The Userform is called Summary, and the ComboBox in question is named Month_Filter If Summary.Month_Filter = "January" Then ....... Call UpdatedTotals End Sub Sub UpdatedTotals() Dim ChosenDate as String If Summary.Month_Filter <> "" Then ChosenDate = Summary.Month_Filter.Value Range("A1").FormulaR1C1 = ChosenDate End Sub 

combobox的值可以通过以下方式访问:

 Me.comboBoxName.Value 

所以像这样:

 If Me.comboBoxName.Value = "January" Then .... 

会工作。

但是,这只适用于在窗体代码中编写的代码(如果有意义的话)。 您将无法在单独的模块中使用该代码,因为它不会知道有关Me.comboBoxName的任何内容…如果要在不同的模块中使用该值,则必须在调用该子项时传递该值/function。

Value属性将返回所选列表项的BoundColumn的值。

ListIndex属性返回所选列表项的索引(从第一个项目的零开始)。 如果您正在查找的值不在BoundColumn它可以与Column一起使用以获取正确的值。

 ChosenDate = Summary.Month_Filter.Column(Summary.Month_Filter.ListIndex,1) 

第二个参数1指的是第二列,就像列表项一样,它是基于零的。

尝试这个:

 Private Sub Filter_Click() If Summary.Month_Filter.Value = "January" Then ....... Call UpdatedTotals End Sub Sub UpdatedTotals() If Summary.Month_Filter.Value <> "" Then Range("A1").Value = Summary.Month_Filter.Value End Sub