我可以将Excel ComboBox设置为具有默认值吗?

时间:2015-07-28 19:09:05

标签: excel vba

我的ComboBox(名为ddDatabase)可以有两个值之一。这两个值是从单独工作表中的表中提取的。但是,当我打开Excel文件时,这两个值都没有被选中。相反,ComboBox显示为空。有没有办法明确地将特定值设置为默认值?

经过一些进一步测试后,如果Excel文件保存时选择了ComboBox的第一项,则下次打开文件时,默认为空白。选择ComboBox中除第一个以外的任何其他值将在保存,关闭和重新打开后保留选择。

我尝试使用VBA通过使用此代码打开工作簿时设置值来解决此问题:

Sub Workbook_Activate()

    Dim ddDatabase As DropDown
    Set ddDatabase = ActiveSheet.DropDowns("ddDatabase")
    ddDatabase.Value = 1

End Sub

不幸的是,它会引发以下错误:

unable to set the value property of the dropdown class

有解决方法吗?

4 个答案:

答案 0 :(得分:4)

使用此:

.ComboBox1.Text = .ComboBox1.List(1) 'Change the number to the value you want as default. 
'If you want to default to something like 'select a value' write it as a string

您必须在创建时自行指定值(或在工作簿打开时指定值,如果表单处于打开状态,则表单打开)。

编辑:

如果您对此更灵活,可能需要将其更改为验证列表:

    With f_overview.Range("cell_act").Validation 'Change this to something like Sheets("Sheet1").Range("A1").Validation
        .delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=Acteurs!$E$4:$E$23" 'Change this to "=Sheet1!$A$1:$A$2"
    End With

第一个注释行用于列表的放置,第二个是你的源值(你的两个值)。

答案 1 :(得分:1)

您可以手动设置它。也许在workbook_open事件上做。

ComboBox1.Text = "SomeText"

答案 2 :(得分:0)

当我在Excel 2013中尝试它时,就像选择该ComboBox中的两个项目之一然后保存工作簿一样简单。下次我打开它时,我选择的那个显示为"默认"。

当我将两个源单元格中的一个设置为=NOW()(以便下次打开时显示的值不同)时,它甚至可以工作,然后选择并保存它。下次打开时,它仍然在ComboBox中显示(更新的)=NOW()值。

除非您需要纯VBA解决方案?

答案 3 :(得分:0)

将默认值设为下拉菜单中的第一个选项。

With ActiveSheet.Shapes("ddDatabase").ControlFormat
    .value = 1
End With