使用Combobox将Excel VBA时间格式设置为十进制

时间:2010-12-09 18:11:32

标签: excel vba time combobox format

非常基本,非常烦人,我在没有帮助的情况下搜索了几个小时的解决方案...

问题:我从命名范围填充Combobox,范围是时间列表(格式化为时间:-),组合似乎很好,下拉显示我应该的时间,但是当选择的时间格式化为十进制数...

alt text

这是代码(简化为最低限度):

Private Sub UserForm_Initialize()
    ComboBoxTime.RowSource = "Help!Time" 
End Sub

“帮助”是包含命名范围“时间”的工作表的名称我尝试过格式化不同的方式而没有运气......

ComboBoxTime = Format(ComboBoxTime, "hhmm")

以下是示例链接。 http://www.equstom.fi/dateproblem.html

(是的,我需要从命名范围填充,而不是每个循环,我将使用代码设置.value,整个文档实际上非常复杂,但我只包括问题部分...)

2 个答案:

答案 0 :(得分:2)

尝试这样的事情:

Private Sub ComboBox1_Change()
With ComboBox1
  .Value = Format(.Value, "hh:mm:ss AMPM")

End With
End Sub 

HTH!

修改 这是我离开你的组合时看到的。时间显示工作正常。

alt text

编辑2

发现错误“无效属性”:

您必须在组合框中将“Match Requiered”设置为FALSE。如果您认为它应该是“TRUE”,那么您必须手工验证......

答案 1 :(得分:0)

问题被命名为我正在使用的范围,当值被格式化为时间时它将无效。如果值是文本,我得到它的工作!问题与excel在芬兰语和VBA英语有关... 我在范围旁边添加了第二列,它将文本值复制到格式化为time的此命名第二范围。快又脏! (感谢您输入Belisarius)