格式化以在combobox和链接的单元格输出中显示毫秒值的时间
我正在制作一个工作表,允许用户在预先logging的数据的两个时间值之间过滤数据。 该数据的时间格式下降到十分之一秒(HH:MM:SS.0),而combobox列表将显示所有这些值,当select一个时,它将被截断为第二个值。 我已经做了一些查找,并find了很多有关CURRENT时间的毫秒数的调用时间,但不是只是格式化显示。 这是我的combobox代码当前如何读取:
Private Sub ComboBox21_Change() With ComboBox21 .Value = Format(.Value, "hh:mm:ss") End With End Sub
我已经尝试了几个不同的选项,包括在最后添加“.0”,但没有运气。 此外,我已经注意到,在进行select时链接单元格中的值似乎反映了select本身的内容。 我的印象是,链接的单元格会显示select的相对数量与可用select的总数量,这是我真正需要的。 有谁知道如何解决这一问题?
Format
函数似乎不能处理毫秒。
我会使用Application.Text
函数。 但是这个函数需要第一个参数是数字。 所以我们必须testing一下:
Private Sub ComboBox21_Change() With ComboBox21 If IsNumeric(.Value) Then .Value = Application.Text(CDbl(.Value), "hh:mm:ss.000") End If End With End Sub
编辑:
由于我们正在改变ComboBox
的_Change
事件中的.Value
,所以它总是运行两次。 更好的是:
Dim stopCBEvents As Boolean Private Sub ComboBox21_Change() If Not stopCBEvents Then With ComboBox21 'MsgBox .Value If IsNumeric(.Value) Then stopCBEvents = True .Value = Application.Text(--.Value, "hh:mm:ss.000") stopCBEvents = False End If End With End If End Sub
你可以做这样的事情:
.Value = Format(.Value, "hh:mm:ss") & Right(Format(.Value * 24 * 60 * 60, "0.0"), 2)
将零的数量和2更改为所需的长度。 这将是一个string,你将需要转换回数字。 你可以通过参考链接单元在Excel中做到这一点:
=--A1