ComboBox 中的值格式未正确显示

Format of value in ComboBox is not showing correctly

所以我有一个带有时间列表的 ComboBox,ComboBox 从工作簿中的 sheet 获取值,并使用 RowSource 将它们放在 ComboBox 上。 (这些单元格的格式为 hh:mm)

最初 ComboBox 会以正确的格式显示值,但是当 selecting 这些值之一时,它将 selected 时间显示为数字而不是时间

例如,9:00 会在时间列表中显示为 9:00,但当 selected 会将其转换为 0.375

为了解决这个问题我使用了下面的代码

Private Sub ComboBox5_Change()

ComboBox5.Value = VBA.Format$(ComboBox5.Value, "hh:mm")

End Sub

所以现在 9:00 是这样显示的

除了 12:00 之外,这对我列表中的所有时间都非常有效,当我 select 12:00 它显示错误

有人知道为什么这只在我 select 12:00 时给我一个错误吗?

试试,请下个办法。如果 0.5...

,它会添加一个小值(相当于一秒)
Private Sub ComboBox5_Change()
    Me.ComboBox2.Value = Format(IIf(Me.ComboBox5.Value = "0.5", _
               "0.500011574074074", Me.ComboBox5.Value), "hh:mm")
End Sub

如果还是有问题,这只能是第二次Change事件被事件本身代码触发的结果。

由于Application.EnableEvents = False不适用于表单控件,我们必须构建自己的方法来使事件只被触发一次:

  1. 在表单模块顶部创建一个 Private 变量:
    Private NoEvents As Boolean
  1. 按以下方式调整 Change 事件:
    Private Sub ComboBox5_Change()
        If Not NoEvents Then
            NoEvents = True
            Me.ComboBox5.Value = Format(IIf(Me.ComboBox5.Value = "0.5", _
                      "0.500011574074074", Me.ComboBox5.Value), "hh:mm")
        End If
    End Sub
  1. Change 之后触发的事件中使布尔变量为假:
    Private Sub ComboBox5_Click()
        NoEvents = False
    End Sub