在用户表单中创建组合框以将时间显示为HH:MM AM / PM的最佳代码是什么?
现在,我将组合框的时间作为一系列十进制值,表示工作表中的1分钟增量;时间格式化是在组合框更改事件上完成的(有14个组合框按编号顺序命名,因此当最后一个更改时,它会遍历所有14个组合框。)
Private Sub COMBOBOX_14_Change()
Dim i As Integer
i = 1
For i = i To 14 Step 1
INPUT_FORM.Controls("COMBOBOX_" & i) = Format(INPUT_FORM.Controls("COMBOBOX_" & i), "HH:MM AM/PM")
Next i
End Sub
答案 0 :(得分:0)
我无法重现这个问题。我注意到您在分配值时没有使用格式化功能,这可能是造成问题的原因。
我使用组合框创建了一个用户表单,并以一分钟为增量从上午8点到下午5点填充组合框。我将用户选择存储在Sheet1的A1中。当我选择12:00 PM,关闭并重新打开表单时,它仍显示12:00。当我点击下拉箭头时,它会在正确的位置开始。也许你可以发现我的代码和你的代码之间的区别。
Private Sub UserForm_Initialize()
Dim i As Long
Dim j As Long
For i = 8 To 17
For j = 0 To 59
Me.ComboBox1.AddItem Format(TimeSerial(i, j, 0), "hh:mm AM/PM")
Next j
Next i
If Not IsEmpty(Sheet1.Range("a1").Value) Then
Me.ComboBox1.Value = Format(Sheet1.Range("A1").Value, "hh:mm AM/PM")
End If
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Sheet1.Range("A1").Value = Me.ComboBox1.Value
End Sub
要记住的一件重要事情是组合框中的东西是文本。即使它们看起来像数字,日期,时间,布尔等,它只是文本。因此,当您以某种方式显示它时,请始终尝试自己进行转换,而不是依靠Excel来执行此操作。