【问题标题】:Can I set an Excel ComboBox to have a default value?我可以将 Excel ComboBox 设置为具有默认值吗?
【发布时间】:2019-01-04 22:19:23
【问题描述】:

我的 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

有解决办法吗?

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    使用这个:

    .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
    

    注释的第一行是列表的位置,第二行是您的源值(您的两个值)。

    【讨论】:

    • 尝试在 Workbook_Active unable to set the value property of the dropdown class 上设置时出现此错误。
    • Unable to get the List property of the DropDown class
    • 如果为验证列表添加 VBA 创建,您可以很容易地设置它,因为列表是单元格的一部分。你可以写 Range("validation list's cell") = "blablabla" 就可以了。
    【解决方案2】:

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

    ComboBox1.Text = "SomeText"
    

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

        将您的默认值设为下拉列表中的第一个选项。

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

        【讨论】:

          猜你喜欢
          • 2011-04-05
          • 2017-02-22
          • 1970-01-01
          • 2012-08-13
          • 1970-01-01
          • 1970-01-01
          • 2011-10-24
          • 2020-04-21
          • 1970-01-01
          相关资源
          最近更新 更多