首页 文章

格式化以在组合框和链接的单元格输出中显示毫秒值的时间

提问于
浏览
1

我正在开发一个工作表,允许用户在预先录制的数据的两个时间值之间过滤数据 . 此数据的时间格式下降到十分之一秒(HH:MM:SS.0),而组合框列表将显示所有这些值,当选择一个时,它将被截断为仅第二个值 . 我已经做了一些观察,发现了很多关于在CURRENT时间内调用时间到毫秒的信息,但不仅仅是格式化显示 . 这是我的组合框代码目前的读取方式:

Private Sub ComboBox21_Change()

With ComboBox21
    .Value = Format(.Value, "hh:mm:ss")
End With

End Sub

我尝试了一些不同的选项,包括在最后添加“.0”,但没有运气 . 此外,我注意到在进行选择时链接单元格中的值似乎反映了选择本身的含义 . 我的印象是,链接的单元格会显示选择的相对数量与可用选择的总数,这是我实际需要的 . 有谁知道如何解决这一问题?

2 回答

  • 3

    Format 函数似乎无法处理毫秒数 .

    我会改用 Application.Text 函数 . 但是这个函数需要第一个参数是数字 . 所以我们必须测试一下:

    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
    

    Edit:

    由于我们要在 ComboBox_Change 事件中更改 ComboBox.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
    
  • 1

    你可以这样做:

    .Value = Format(.Value, "hh:mm:ss") & Right(Format(.Value * 24 * 60 * 60, "0.0"), 2)
    

    将零的数量和2更改为所需的长度 . 这将是您需要转换回数字的字符串 . 您可以通过引用链接的单元格在excel中执行此操作:

    =--A1
    

相关问题