首页 > 解决方案 > 在 UserForm 中的 ComboBox 列表中使用自定义日期格式

问题描述

在我的 Excels 电子表格中,我有以下数据:

       A                B
1   2020-01-06
2   2020-01-07
3   2020-01-08
4   2020-01-09
5   2020-01-10
6   2020-01-11
7   2020-01-12
8

我使用的是德语 Excel,所以正常的日期格式是06.01.202001.07.2020依此类推。
为了将日期格式切换为上述样式,我使用如下屏幕截图中customized的格式。JJJJ-MM-TT

在此处输入图像描述

--- 很抱歉只有德语版的屏幕截图。---

这一切都很好。


现在,我想使用range A1:A7inComboBox1中的数据UserForm2
因此,我使用了这个 VBA:

Sub UserForm_Activate()
ComboBox1.List = Sheet1.Range("A1:A7").Value
End Sub

此 VBA 将列表插入到 中,ComboBox1但不使用customized date.
它切换回original date format看起来像这样:

在此处输入图像描述

我需要在我的 VBA 中进行哪些更改,以便它以与中相同的样式显示日期range A1:A7

标签: excelvba

解决方案


这段代码应该可以完成这项工作。

Private Sub UserForm_Initialize()

    Dim Arr As Variant
    Dim i As Integer

    Arr = Sheet1.Range("A1:A7").Value
    For i = 1 To UBound(Arr)
        ' this is English syntax and might be different in German
        Arr(i, 1) = Format(Arr(i, 1), "yyyy-mm-dd")
    Next i

    ComboBox1.List = Arr
End Sub

Initialize事件在表单创建时触发,该Activate事件稍后在它被激活时触发。使用该Activate事件,您可以使用不同的列表再次Hide更改数据和表单。Show除非这是您的计划,否则它更像是“无法解释的错误”的来源。因此,我建议使用该Initialize事件。


推荐阅读