专业的编程技术博客社区

网站首页 > 博客文章 正文

非常有趣,vba ComboBox 正确显示日期方法

baijin 2024-10-24 08:50:24 博客文章 14 ℃ 0 评论

使用组合框控件的时候,可能会发生一个小问题,不能正确显示日期格式,很明显,这是数据格式的一种错误方式,所以还是从数据格式入手查找原因。


这是个小例子,左边为常规格式显示的日期,右边为日期格式显示。

通常遇到此类的问题,比较习惯网上搜索一下,各种说明文档查找,然后煞费苦心地研究一番。

兜兜圈圈回来发现,其实并不算什么问题,然而却阻碍了进行下去的步伐,这就让我有一种突然放弃的想法, 放弃一切,放弃逻辑思考,放弃尘世间的尔虞我诈。

但这样美好的想象并不能让我解脱,反而有种更大的束缚,让自己变成一个快要窒息的鱼儿,坚持在污浊的池塘里游荡。

这话有点虚无,说太多没有意义的事情。

利用一个简单的方法就解决了问题,具体代码看下面。

不同代码比较

Private Sub ComboBox1_Change()‘’‘日期格式
    Dim Rang As Range, keys As Variant
    Set Rang = Worksheets("Sheet1").Range("A1:A12")
    If Not VBA.IsNumeric(Me.ComboBox1.Value) Then Exit Sub
    keys = VBA.CDate(Me.ComboBox1.Value)'''这里有所不同
    If ScreaceKey(Rang, keys) Is Nothing Then Exit Sub
    Me.ComboBox1.Value = ScreaceKey(Rang, keys)
    Me.Label1.Caption = Me.ComboBox1.Value
End Sub
Private Sub ComboBox2_Change()’’’常规格式
    Dim Rang As Range, keys As Variant
    Set Rang = Worksheets("Sheet1").Range("A1:A12")
    keys = Me.ComboBox2.Value'''这里有所不同
    If ScreaceKey(Rang, keys) Is Nothing Then
        Me.Label2.Caption = keys
    End If
End Sub

查找函数

从表格区域内查找相关日期,然后返回一个单元格对象。


可能这也没算什么问题,由于对日期的处理比较频繁,所以对日期编程方面要十分仔细,遇到此类问题一般从数据格式入手,一定要保护一致,不然很容易出现不必要的问题。

结尾

不知道这算不算解决了一个小问题,对我来说可能是有一点困扰,由于心浮气燥的原因,所以一 直在用一种无法想象的方法来规避问题。

然而那种无法想象的方法,我也懒得拿来展示,实际上根本就找不到代码。所以感觉还是用严谨一点的做法来处理比较好,就像这篇文章一样,应该算是做了点努力吧!

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表