Vba excel combobox формат даты

Предположим, вы добавили список дат в поле со списком. При выборе даты из поля со списком, дата будет отображаться как номер серии в поле со списком, как показано ниже. Как отобразить формат даты в выводе поля со списком в Excel? Вы можете попробовать метод из этой статьи.

Формат отображения даты в выводе поля со списком с кодом VBA


Формат отображения даты в выводе поля со списком с кодом VBA

Приведенный ниже код VBA может помочь вам отобразить формат даты в выводе поля со списком в Excel. Пожалуйста, сделайте следующее.

1. Убедитесь, что Режим проектирования включается под Застройщик таб. Смотрите скриншот:

2. Щелкните правой кнопкой мыши поле со списком с датой, которую необходимо отображать в формате даты, затем щелкните Просмотреть код из контекстного меню.

3. Затем Microsoft Visual Basic для приложений появится всплывающее окно, замените исходный код VBA в окне кода приведенным ниже кодом VBA.

Код VBA: отображение формата даты в выводе поля со списком в Excel

Private Sub ComboBox1_Click()
    ActiveSheet.ComboBox1.Value = Format(ActiveSheet.ComboBox1.Value, "mm/dd/yyyy")
End Sub

Внимание: в коде ComboBox1 — это имя поля со списком, «мм / дд / гггг» — это формат даты, который вы будете отображать в выводе поля со списком.

4. нажмите другой + Q ключи, чтобы закрыть Microsoft Visual Basic для приложений окно и выключите Режим проектирования под Застройщик меню.

С этого момента при выборе даты из поля со списком она будет отображаться в виде указанного формата даты в выходных данных вместо номера серии, как показано ниже.


Статьи по теме:

  • Как скопировать значение поля со списком в активную ячейку в Excel?
  • Как скрыть или показать командную кнопку на основе указанного значения ячейки в Excel?
  • Как открыть конкретный рабочий лист по выбранному значению поля со списком в Excel?
  • Как предотвратить или отключить ввод текста в поле со списком в Excel?
  • Как выйти из поля со списком, чтобы выбрать конкретную ячейку в Excel?

Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (0)


Оценок пока нет. Оцените первым!

Combobox, формат даты

Мур

Дата: Четверг, 24.01.2013, 14:54 |
Сообщение № 1

Группа: Проверенные

Ранг: Обитатель

Сообщений: 436


Репутация:

19

±

Замечаний:
0% ±


Приветствую участников форума!
С помощью элемента Combobox, расположенного на форме добавляю в таблицу дату.
Почему-то в форме она отображается в формате «1/24/2013», как изменить на «24.01.2013»
или хотя бы на «24/01/2013» не могу понять. Подскажите пожалуйста, если такое возможно.
И еще, может есть такой элемент управления как календарь для формы, и чтобы его можно было связать с ячейкой?
Заранее благодарю.

 

Ответить

Serge_007

Дата: Четверг, 24.01.2013, 15:34 |
Сообщение № 2

Группа: Админы

Ранг: Местный житель

Сообщений: 15894


Репутация:

2623

±

Замечаний:
±


Excel 2016

Попробуйте файл

К сообщению приложен файл:

CB_Moore.xls
(36.0 Kb)


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

Мур

Дата: Четверг, 24.01.2013, 15:41 |
Сообщение № 3

Группа: Проверенные

Ранг: Обитатель

Сообщений: 436


Репутация:

19

±

Замечаний:
0% ±


Serge_007,
посмотрите что происходит при установке свойства RowSource.

К сообщению приложен файл:

vot.xls
(37.0 Kb)

Сообщение отредактировал МурЧетверг, 24.01.2013, 15:46

 

Ответить

RAN

Дата: Четверг, 24.01.2013, 15:53 |
Сообщение № 4

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

Сейчас убегаю, но чтобы в ячейку попала дата

[vba]

Код

Range(«a1»).Value = CDate(ComboBox1.Text)

[/vba]


Быть или не быть, вот в чем загвоздка!

 

Ответить

Мур

Дата: Четверг, 24.01.2013, 15:54 |
Сообщение № 5

Группа: Проверенные

Ранг: Обитатель

Сообщений: 436


Репутация:

19

±

Замечаний:
0% ±


Или вот нагляднее

К сообщению приложен файл:

vot_Eshe.xls
(38.0 Kb)

 

Ответить

Serge_007

Дата: Четверг, 24.01.2013, 15:56 |
Сообщение № 6

Группа: Админы

Ранг: Местный житель

Сообщений: 15894


Репутация:

2623

±

Замечаний:
±


Excel 2016

А так?


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

Мур

Дата: Четверг, 24.01.2013, 16:00 |
Сообщение № 7

Группа: Проверенные

Ранг: Обитатель

Сообщений: 436


Репутация:

19

±

Замечаний:
0% ±


RAN,
попробовал — без изменений.

 

Ответить

Serge_007

Дата: Четверг, 24.01.2013, 16:05 |
Сообщение № 8

Группа: Админы

Ранг: Местный житель

Сообщений: 15894


Репутация:

2623

±

Замечаний:
±


Excel 2016

А вообще достаточно установить формат:
[vba]

Код

Me.ComboBox1.Value = Format(Me.ComboBox1, «dd/mm/yyyy»)

[/vba]


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

Мур

Дата: Четверг, 24.01.2013, 16:07 |
Сообщение № 9

Группа: Проверенные

Ранг: Обитатель

Сообщений: 436


Репутация:

19

±

Замечаний:
0% ±


Serge_007,
так нормально, только не пойму, где там указывается связь с ячейкой?

 

Ответить

Мур

Дата: Четверг, 24.01.2013, 16:22 |
Сообщение № 10

Группа: Проверенные

Ранг: Обитатель

Сообщений: 436


Репутация:

19

±

Замечаний:
0% ±


Serge_007,
[vba]

Код

Me.ComboBox1.Value = Format(Me.ComboBox1, «dd/mm/yyyy»)

[/vba]Вроде получается. Большое спасибо.
Меня и клендарь заинтересовал, интресная штука. Не пойму как связать с другой ячейкой?

 

Ответить

Мур

Дата: Четверг, 24.01.2013, 16:24 |
Сообщение № 11

Группа: Проверенные

Ранг: Обитатель

Сообщений: 436


Репутация:

19

±

Замечаний:
0% ±


Serge_007,
пост №9 относится к CB_Moore2.xls

 

Ответить

Serge_007

Дата: Четверг, 24.01.2013, 16:25 |
Сообщение № 12

Группа: Админы

Ранг: Местный житель

Сообщений: 15894


Репутация:

2623

±

Замечаний:
±


Excel 2016

Вы это ищите?
[vba]

Код

Range(«a1») = ComboBox1.Value

[/vba]


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

Мур

Дата: Четверг, 24.01.2013, 16:29 |
Сообщение № 13

Группа: Проверенные

Ранг: Обитатель

Сообщений: 436


Репутация:

19

±

Замечаний:
0% ±


Serge_007,
Да это.
Сам не сообразил.
Значит в этом случае свйство ControlSource можно не задавать?

 

Ответить

Мур

Дата: Четверг, 24.01.2013, 16:30 |
Сообщение № 14

Группа: Проверенные

Ранг: Обитатель

Сообщений: 436


Репутация:

19

±

Замечаний:
0% ±


Вроде все ясно!
Большое спасибо Serge_007 и RAN!

 

Ответить

Мур

Дата: Понедельник, 28.01.2013, 12:42 |
Сообщение № 15

Группа: Проверенные

Ранг: Обитатель

Сообщений: 436


Репутация:

19

±

Замечаний:
0% ±


Приветствую участников!
В продолжение темы про формат ComboBox1:
необходимо вести данные в формате «000.00»,
в окошке ComboBox1 и в связанной ячейке должно отображаться, например
001.13, 123.13 или 999.13. Есть нюанс: периодически встречаются значеия
001/1.13, 001/2.13 или 999/1.13.
какое значение функции[vba]

Код

Format(Me.ComboBox1, «???????»)

[/vba]
надо ввести в кавычках?

Сообщение отредактировал МурПонедельник, 28.01.2013, 13:27

 

Ответить

_Boroda_

Дата: Понедельник, 28.01.2013, 15:40 |
Сообщение № 16

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

В данном случае это текст, значит, ничего не надо
[vba][/vba]

К сообщению приложен файл:

168945.xlsm
(17.6 Kb)


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

RAN

Дата: Понедельник, 28.01.2013, 16:20 |
Сообщение № 17

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

Файл

К сообщению приложен файл:

2766592.xls
(38.5 Kb)


Быть или не быть, вот в чем загвоздка!

 

Ответить

Мур

Дата: Понедельник, 28.01.2013, 16:25 |
Сообщение № 18

Группа: Проверенные

Ранг: Обитатель

Сообщений: 436


Репутация:

19

±

Замечаний:
0% ±


_Boroda_,
Все верно, только 001.13 не вставляется, нули пропадают.

Сообщение отредактировал МурПонедельник, 28.01.2013, 16:33

 

Ответить

Мур

Дата: Понедельник, 28.01.2013, 16:32 |
Сообщение № 19

Группа: Проверенные

Ранг: Обитатель

Сообщений: 436


Репутация:

19

±

Замечаний:
0% ±


_Boroda_,
Прошу прощения, вроде получается. Пока разбираюсь.
Спасибо!

 

Ответить

Мур

Дата: Понедельник, 28.01.2013, 16:32 |
Сообщение № 20

Группа: Проверенные

Ранг: Обитатель

Сообщений: 436


Репутация:

19

±

Замечаний:
0% ±


RAN,
Большое спасибо, то что надо!
Попробую дома и еще отпишусь.

Сообщение отредактировал МурПонедельник, 28.01.2013, 16:33

 

Ответить

The following code allows only date values in the format «dd.mm.yyyy» to be added into the textbox (change that for combobox). Dates must be larger than 01.01.2000 and smaller than 31.12.2099 and a message is displayed to alert if the date entered is in the future:

Private Sub TextBox1_Change()
Dim ldm As Integer
Dim Reply As Long
Application.EnableEvents = False
If InStr(1, Join(Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "."), "|"), Right(TextBox1.Text, 1)) = 0 Then _
TextBox1.Text = Left(TextBox1.Text, Len(TextBox1.Text) - 1)
If Len(TextBox1.Text) = 1 Then
    If TextBox1.Text > 3 Then
        TextBox1.Text = "0" & TextBox1.Text
    End If
ElseIf Len(TextBox1.Text) = 2 Then
    If Mid(TextBox1.Text, 2, 1) = "." Then
        TextBox1.Text = "0" & Left(TextBox1.Text, 1) & "."
        Exit Sub
    End If
    If TextBox1.Text < 31 Then
        TextBox1.Text = TextBox1.Text & "."
    Else
        TextBox1.Text = "31."
    End If
ElseIf Len(TextBox1.Text) = 4 Then
    If Right(TextBox1.Text, 1) > 1 Then
        TextBox1.Text = Left(TextBox1.Text, 3) & "0" & Right(TextBox1.Text, 1)
    End If
ElseIf Len(TextBox1.Text) = 5 Then
    If Right(TextBox1.Text, 1) = "." Then
        If Mid(TextBox1.Text, 4, 1) = 0 Then
            TextBox1.Text = Left(TextBox1.Text, 4)
            Exit Sub
        Else
            TextBox1.Text = Left(TextBox1.Text, 3) & "0" & Mid(TextBox1.Text, 4, 1) & "."
            Exit Sub
        End If
    End If
    If Right(TextBox1.Text, 2) < 13 Then
        TextBox1.Text = TextBox1.Text & "."
    Else
        TextBox1.Text = Left(TextBox1.Text, 3) & "12."
    End If
ElseIf Len(TextBox1.Text) = 7 Then
    If Right(TextBox1.Text, 1) <> "2" Then
        TextBox1.Text = Left(TextBox1.Text, 6) & "2"
    End If
ElseIf Len(TextBox1.Text) = 8 Then
    If InStr(1, Join(Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9), "|"), Right(TextBox1.Text, 1)) = 0 Then _
    TextBox1.Text = Left(TextBox1.Text, Len(TextBox1.Text) - 1)
    If Right(TextBox1.Text, 1) > 0 Then
        TextBox1.Text = Left(TextBox1.Text, 7) & "0"
    End If
ElseIf Len(TextBox1.Text) = 9 Then
    If InStr(1, Join(Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9), "|"), Right(TextBox1.Text, 1)) = 0 Then _
    TextBox1.Text = Left(TextBox1.Text, Len(TextBox1.Text) - 1)
ElseIf Len(TextBox1.Text) = 10 Then
    If IsNumeric(TextBox1.Text) = False Then TextBox1.Text = Left(TextBox1.Text, 8)
    ldm = Format(DateSerial((Right(TextBox1.Text, 4)), (Mid(TextBox1.Text, 4, 2)) + 1, 0), "d")
    If Left(TextBox1.Text, 2) > ldm Then TextBox1.Text = ldm & Right(TextBox1.Text, 8)
    If DateSerial(Right(TextBox1.Text, 4), Mid(TextBox1.Text, 4, 2), Left(TextBox1.Text, 2)) > Now() Then
        Reply = MsgBox("Das eingegebene Datum liegt in der Zukunft." & vbNewLine & "Wollen Sie es so lassen?", vbYesNo, "Datum in der Zukunft")
        If Reply = vbNo Then
            TextBox1.Text = Format(Now(), "DD.MM.YYYY")
        End If
    End If
    If Mid(TextBox1.Text, 3, 1) <> "." Then TextBox1.Text = Left(TextBox1.Text, 2) & "." & Right(TextBox1.Text, 7)
    If Mid(TextBox1.Text, 6, 1) <> "." Then TextBox1.Text = Left(TextBox1.Text, 5) & "." & Right(TextBox1.Text, 4)
ElseIf Len(TextBox1.Text) > 10 Then
    TextBox1.Text = Left(TextBox1.Text, 10)
End If
Application.EnableEvents = True
End Sub

  • #1

Hi all,

I tried to do this in a userform:
-Display a date value of cell «a1» of «try» sheet in combobox1
-when arrow is press down, combobox display date list from c1:c10
-when new date selected, date cell in «a1» value is changed accordingly

I got all solved by changing the combobox properties:
controlsource: =a1
rowsource: =c1:c10

But i cannot get the date format correctly. When I search the forum i got this:

Private Sub ComboBox1_Change()
ComboBox1.Value = Format(ComboBox1.Value, «dd/mm/yyyy»)
End Sub

But when new date is selected, it display an error message:
«Run-time error ‘380’: Could not set the Value property. Invalid property value.»

What should I do?

Thanks,

Enter current date or time

Ctrl+: enters current time. Ctrl+; enters current date. Use Ctrl+: Ctrl+; Enter for current date & time.

rjp

Board Regular


  • #2

Hi,

You’re trying to set the combobox’s value to itself. I think your code should read:

Code:

Private Sub ComboBox1_Change() 
Worksheets("Try").Cells(1, 1).Value = Format(ComboBox1.Value, "dd/mm/yyyy") 
End Sub

  • #3

Hi Rob,

Thanks for your reply, but it still not workin as expected.

I’ll try and browse around some more. Will let you know if I found the solution.

Thanks again & have a nice day!

DanteAmor

DanteAmor

  1. 02-15-2006, 08:15 AM


    #1

    ComboBox Date Format Problem

    I have a combobox on a userform that is linked via the row source property to
    a list of dates on Worksheet A. The dates are formatted as dd/mmm/yyyy on
    the worksheet and are displayed as such within the combobox. However when
    the user selects a date from the list it is displayed in the combobox in a
    general format i.e. «36125». My userform is set up that when the user makes
    a selection that it writes the contents to WorksheetB, the date is displayed
    correctly as dd/mmm/yyyy when written to the worksheet.

    Does anyone know how I may change the combobox so that the date is displayed
    correctly when selected and in such a way that the format does not change
    when written to the underlying worksheet??

    All ideas welcomed!

    Thanks,

    Ciara


  2. 02-15-2006, 08:30 AM


    #2

    RE: ComboBox Date Format Problem

    Try

    Private Sub ComboBox1_Change()
    ComboBox1.Value = Format(ComboBox1.Text, «dd/mmm/yyyy»)
    End Sub

    «CiaraG» wrote:


    > I have a combobox on a userform that is linked via the row source property to
    > a list of dates on Worksheet A. The dates are formatted as dd/mmm/yyyy on
    > the worksheet and are displayed as such within the combobox. However when
    > the user selects a date from the list it is displayed in the combobox in a
    > general format i.e. «36125». My userform is set up that when the user makes
    > a selection that it writes the contents to WorksheetB, the date is displayed
    > correctly as dd/mmm/yyyy when written to the worksheet.
    >
    > Does anyone know how I may change the combobox so that the date is displayed
    > correctly when selected and in such a way that the format does not change
    > when written to the underlying worksheet??
    >
    > All ideas welcomed!
    >
    > Thanks,
    >
    > Ciara


  3. 02-15-2006, 10:20 AM


    #3

    RE: ComboBox Date Format Problem

    Thanks you so much. I have been thrawling through the internet for days now
    and have tried variations of the code below but with no luck. Thank you.

    «Toppers» wrote:


    > Try
    >
    > Private Sub ComboBox1_Change()
    > ComboBox1.Value = Format(ComboBox1.Text, «dd/mmm/yyyy»)
    > End Sub
    >
    > «CiaraG» wrote:
    >
    > > I have a combobox on a userform that is linked via the row source property to
    > > a list of dates on Worksheet A. The dates are formatted as dd/mmm/yyyy on
    > > the worksheet and are displayed as such within the combobox. However when
    > > the user selects a date from the list it is displayed in the combobox in a
    > > general format i.e. «36125». My userform is set up that when the user makes
    > > a selection that it writes the contents to WorksheetB, the date is displayed
    > > correctly as dd/mmm/yyyy when written to the worksheet.
    > >
    > > Does anyone know how I may change the combobox so that the date is displayed
    > > correctly when selected and in such a way that the format does not change
    > > when written to the underlying worksheet??
    > >
    > > All ideas welcomed!
    > >
    > > Thanks,
    > >
    > > Ciara


  4. 07-16-2014, 03:17 PM


    #4

    brucemc777 is offline


    Forum Contributor


    Re: ComboBox Date Format Problem

    OK, many years too late, but for possible benefit of others, IF the date is properly formatted in the cell on your spreadsheet, instead of using .value, use .text.

    Please let me finally help somebody; everyone else has helped me soooooo much………..


  5. 11-19-2019, 11:12 AM


    #5

    Frigide is offline


    Forum Contributor


    Re: ComboBox Date Format Problem

    I have done it. I changes .value to .text!!


Понравилась статья? Поделить с друзьями:
  • Vba excel collection add
  • Vba excel close excel file
  • Vba excel close all workbook
  • Vba excel click button
  • Vba excel cint что это