【问题标题】:Setting value of a UserForm Combobox用户窗体组合框的设置值
【发布时间】:2016-06-01 20:55:38
【问题描述】:

(根据in meta 的建议,从我在enter link description here 的更广泛的问题缩小范围。)

我有一个用户表单。在该用户窗体上有几个用于选择年、月和日的组合框。日期组合框根据选择的年份和月份填充最多 28、29、30 或 31 的数字。为避免选择 2 月 31 日之类的日期,我想检查所选日期值是否超过该月的最大值,并适当减少。目前我已经尝试了这些选项:

If Me.Combo_Day.Value > iMaxDate And iMonthNo > 0 And Not Me.Combo_Day.Value = "" Then Me.Combo_Day.Value = Me.Combo_Day.List(iMaxDate - 1)

If Me.Combo_Day.Value > iMaxDate And iMonthNo > 0 And Not Me.Combo_Day.Value = "" Then Me.Combo_Day.Value = iMaxDate

它们都不起作用;每当解析该行时,我都会收到 380 错误,并解释为“无法设置 Value 属性。无效的属性值。”

我尝试更改.Text.Value,但似乎两者都没有太大区别。 如何更改组合框中的选定值?

【问题讨论】:

    标签: excel combobox excel-2013 userform vba


    【解决方案1】:

    由于对reqs的误解而编辑:

    我的错,我误解了原帖。如果日期是按数字顺序设置的,您确实可以使用ListIndex(请记住它从零开始,因此您必须减去 1)。它看起来像:

    Me.Combo_Day.ListIndex = (iMaxDate - 1)

    这行得通吗?

    【讨论】:

    • 谢谢 - 但是,检查工作正常。在这个阶段它没有组合成一个日期,所以它只是检查 Day 组合框的 .Value 与该月给定的最大值。当我尝试将组合框的选定值设置为该月可用的最高值时,就会出现问题。我寄予厚望,我可以使用列表索引,但无济于事。有什么想法吗?
    • @AndrewPerry 我的错,我误解了原帖。如果日期是按数字顺序设置的,您确实可以使用ListIndex(请记住它从零开始,因此您必须减去 1)。它看起来像:Me.Combo_Day.ListIndex = (iMaxDate - 1) 这行得通吗?
    • 啊啊,我从使用 Me.Combo_Day.Value=Me.Combo_Day.ListIndex(iMaxDate-1) 复制的示例。难怪它没有工作!非常感谢,我明天去办公室试试。
    • 完美运行!如果您可以将其编辑到您的答案中,我会勾选它。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多