excel - ComboBox 中的值格式未正确显示
问题描述
所以我有一个带有时间列表的 ComboBox,ComboBox 从工作簿中的工作表中获取值并使用 RowSource 将它们放在 ComboBox 上。(这些单元格的格式为 hh:mm)
最初,Combobox将以正确的格式显示值
例如,9:00 将在时间列表中显示为 9:00,但选择时会将其转换为 0.375
为了解决这个问题,我使用了以下代码
Private Sub ComboBox5_Change()
ComboBox5.Value = VBA.Format$(ComboBox5.Value, "hh:mm")
End Sub
所以现在 9:00 以这种方式显示
除了 12:00 之外,这对于我列表中的所有时间都非常有效,当我选择 12:00 时,它会显示错误
有谁知道为什么当我选择 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
- 在事件之后触发的事件中使布尔变量为 false
Change
:
Private Sub ComboBox5_Click()
NoEvents = False
End Sub
推荐阅读
- matlab - Matlab PDE 有限法
- java - 夏普。NET 到 Java 数组维度声明初始化
- powershell - Jenkins powershell 插件在声明式管道中不起作用
- git - Git 中的樱桃采摘
- java - Maven 父项目既是父项目又是库
- ios - 迅速。使用拖放在 collectionView 中一次正确地重新排序多个项目
- angular - 在 html 中导入离子图标
- ssl - “handshake_failure at remote address”Java netty 错误背后的原因是什么?
- laravel - 如何获得由其他用户撰写的用户提交的推荐信
- excel - 如何使用一组条件计算 Excel 中的匹配项?