Используйте настраиваемый формат даты в списке для ComboBox в пользовательской форме - PullRequest
0 голосов
/ 17 марта 2020

В моей таблице 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.2020, 01.07.2020 и т. Д.
Чтобы переключить формат даты на вышеуказанный стиль, I customized формат с JJJJ-MM-TT, как на скриншоте ниже.

enter image description here

--- Извините, что скриншот доступен только на немецком языке. ---

Все это прекрасно работает.


Теперь я хочу использовать данные из range A1:A7 в ComboBox1 в UserForm2.
Поэтому я пошел с этим VBA:

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

Этот VBA вставляет список в ComboBox1, но не использует customized date.
Он переключается обратно на original date format, который выглядит следующим образом:

enter image description here

Что мне нужно изменить в моем VBA, чтобы он отображал даты в том же стиле, что и в range A1:A7?

1 Ответ

1 голос
/ 17 марта 2020

Этот код должен выполнять работу.

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...