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
不适用于表单控件,我们必须构建自己的方法来使事件只被触发一次:
- 在表单模块顶部创建一个
Private
变量:
Private NoEvents As Boolean
- 按以下方式调整
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
- 在
Change
之后触发的事件中使布尔变量为假:
Private Sub ComboBox5_Click()
NoEvents = False
End Sub
所以我有一个带有时间列表的 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
不适用于表单控件,我们必须构建自己的方法来使事件只被触发一次:
- 在表单模块顶部创建一个
Private
变量:
Private NoEvents As Boolean
- 按以下方式调整
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
- 在
Change
之后触发的事件中使布尔变量为假:
Private Sub ComboBox5_Click()
NoEvents = False
End Sub