Создание и вставка календаря в Excel
Эта статья содержит образец макроса Microsoft Visual Basic для приложений (подпрограммы), который запрашивает у вас месяц и год и создает календарь на месяц с помощью рабочего листа.
Решение
Корпорация Майкрософт предоставляет примеры программирования только в целях демонстрации без явной или подразумеваемой гарантии. Данное положение включает, но не ограничивается этим, подразумеваемые гарантии товарной пригодности или соответствия отдельной задаче. Эта статья предполагает, что пользователь знаком с представленным языком программирования и средствами, используемыми для создания и отладки процедур. Специалисты технической поддержки Майкрософт могут пояснить работу той или иной процедуры, но модификация примеров и их адаптация к задачам разработчика не предусмотрена.
Для создания календаря выполните следующие действия.
Microsoft Excel 2003
- Создайте новую книгу.
- В меню Сервис выберите Макрос, затем выберите Редактор Visual Basic.
- В меню Вставка выберите пункт Модуль.
- Вставьте сценарий Visual Basic для приложений из раздела «Образец процедуры Visual Basic» на лист модуля.
- В меню Файл нажмите Закрыть и вернуться в Microsoft Excel.
- Выберите вкладку Лист1.
- В меню Сервис выберите пункт Макрос, а затем нажмите Макросы.
- Нажмите CalendarMaker, а затем нажмите Выполнить для создания календаря.
Microsoft Excel 2007 или более поздние версии
- Создайте новую книгу.
- На ленте Разработчик выберите Visual Basic.
- В меню Вставка выберите пункт Модуль.
- Вставьте сценарий Visual Basic для приложений из раздела «Образец процедуры Visual Basic» на лист модуля.
- В меню Файл нажмите Закрыть и вернуться в Microsoft Excel.
- Выберите вкладку Лист1.
- На ленте Разработчик щелкните Макрос.
- Нажмите CalendarMaker, а затем нажмите *Выполнить для создания календаря.
Если вкладка «Разработчик» не отображается, перейдите на вкладку «Параметры Excel» и включите ее. В Excel 2007 этот пункт размещен в меню Популярное. В Excel 2010 этот пункт размещен в меню Настроить ленту.
Пример процедуры Visual Basic
Sub CalendarMaker() ' Unprotect sheet if had previous calendar to prevent error. ActiveSheet.Protect DrawingObjects:=False, Contents:=False, _ Scenarios:=False ' Prevent screen flashing while drawing calendar. Application.ScreenUpdating = False ' Set up error trapping. On Error GoTo MyErrorTrap ' Clear area a1:g14 including any previous calendar. Range("a1:g14").Clear ' Use InputBox to get desired month and year and set variable ' MyInput. MyInput = InputBox("Type in Month and year for Calendar ") ' Allow user to end macro with Cancel in InputBox. If MyInput = "" Then Exit Sub ' Get the date value of the beginning of inputted month. StartDay = DateValue(MyInput) ' Check if valid date but not the first of the month ' -- if so, reset StartDay to first day of month. If Day(StartDay) <> 1 Then StartDay = DateValue(Month(StartDay) & "/1/" & _ Year(StartDay)) End If ' Prepare cell for Month and Year as fully spelled out. Range("a1").NumberFormat = "mmmm yyyy" ' Center the Month and Year label across a1:g1 with appropriate ' size, height and bolding. With Range("a1:g1") .HorizontalAlignment = xlCenterAcrossSelection .VerticalAlignment = xlCenter .Font.Size = 18 .Font.Bold = True .RowHeight = 35 End With ' Prepare a2:g2 for day of week labels with centering, size, ' height and bolding. With Range("a2:g2") .ColumnWidth = 11 .VerticalAlignment = xlCenter .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .Orientation = xlHorizontal .Font.Size = 12 .Font.Bold = True .RowHeight = 20 End With ' Put days of week in a2:g2. Range("a2") = "Sunday" Range("b2") = "Monday" Range("c2") = "Tuesday" Range("d2") = "Wednesday" Range("e2") = "Thursday" Range("f2") = "Friday" Range("g2") = "Saturday" ' Prepare a3:g7 for dates with left/top alignment, size, height ' and bolding. With Range("a3:g8") .HorizontalAlignment = xlRight .VerticalAlignment = xlTop .Font.Size = 18 .Font.Bold = True .RowHeight = 21 End With ' Put inputted month and year fully spelling out into "a1". Range("a1").Value = Application.Text(MyInput, "mmmm yyyy") ' Set variable and get which day of the week the month starts. DayofWeek = WeekDay(StartDay) ' Set variables to identify the year and month as separate ' variables. CurYear = Year(StartDay) CurMonth = Month(StartDay) ' Set variable and calculate the first day of the next month. FinalDay = DateSerial(CurYear, CurMonth + 1, 1) ' Place a "1" in cell position of the first day of the chosen ' month based on DayofWeek. Select Case DayofWeek Case 1 Range("a3").Value = 1 Case 2 Range("b3").Value = 1 Case 3 Range("c3").Value = 1 Case 4 Range("d3").Value = 1 Case 5 Range("e3").Value = 1 Case 6 Range("f3").Value = 1 Case 7 Range("g3").Value = 1 End Select ' Loop through range a3:g8 incrementing each cell after the "1" ' cell. For Each cell In Range("a3:g8") RowCell = cell.Row ColCell = cell.Column ' Do if "1" is in first column. If cell.Column = 1 And cell.Row = 3 Then ' Do if current cell is not in 1st column. ElseIf cell.Column <> 1 Then If cell.Offset(0, -1).Value >= 1 Then cell.Value = cell.Offset(0, -1).Value + 1 ' Stop when the last day of the month has been ' entered. If cell.Value > (FinalDay - StartDay) Then cell.Value = "" ' Exit loop when calendar has correct number of ' days shown. Exit For End If End If ' Do only if current cell is not in Row 3 and is in Column 1. ElseIf cell.Row > 3 And cell.Column = 1 Then cell.Value = cell.Offset(-1, 6).Value + 1 ' Stop when the last day of the month has been entered. If cell.Value > (FinalDay - StartDay) Then cell.Value = "" ' Exit loop when calendar has correct number of days ' shown. Exit For End If End If Next ' Create Entry cells, format them centered, wrap text, and border ' around days. For x = 0 To 5 Range("A4").Offset(x * 2, 0).EntireRow.Insert With Range("A4:G4").Offset(x * 2, 0) .RowHeight = 65 .HorizontalAlignment = xlCenter .VerticalAlignment = xlTop .WrapText = True .Font.Size = 10 .Font.Bold = False ' Unlock these cells to be able to enter text later after ' sheet is protected. .Locked = False End With ' Put border around the block of dates. With Range("A3").Offset(x * 2, 0).Resize(2, _ 7).Borders(xlLeft) .Weight = xlThick .ColorIndex = xlAutomatic End With With Range("A3").Offset(x * 2, 0).Resize(2, _ 7).Borders(xlRight) .Weight = xlThick .ColorIndex = xlAutomatic End With Range("A3").Offset(x * 2, 0).Resize(2, 7).BorderAround _ Weight:=xlThick, ColorIndex:=xlAutomatic Next If Range("A13").Value = "" Then Range("A13").Offset(0, 0) _ .Resize(2, 8).EntireRow.Delete ' Turn off gridlines. ActiveWindow.DisplayGridlines = False ' Protect sheet to prevent overwriting the dates. ActiveSheet.Protect DrawingObjects:=True, Contents:=True, _ Scenarios:=True ' Resize window to show all of calendar (may have to be adjusted ' for video configuration). ActiveWindow.WindowState = xlMaximized ActiveWindow.ScrollRow = 1 ' Allow screen to redraw with calendar showing. Application.ScreenUpdating = True ' Prevent going to error trap unless error found by exiting Sub ' here. Exit Sub ' Error causes msgbox to indicate the problem, provides new input box, ' and resumes at the line that caused the error. MyErrorTrap: MsgBox "You may not have entered your Month and Year correctly." _ & Chr(13) & "Spell the Month correctly" _ & " (or use 3 letter abbreviation)" _ & Chr(13) & "and 4 digits for the Year" MyInput = InputBox("Type in Month and year for Calendar") If MyInput = "" Then Exit Sub Resume End Sub
Вы можете добавить другой код, чтобы настроить календарь в соответствии с вашими потребностями. Вставьте дополнительные строки для ввода на экране для каждого дня или измените размер экрана, чтобы увидеть весь календарь в соответствии с размером и разрешением экрана.
Обратная связь
Были ли сведения на этой странице полезными?
Как прикрепить календарь к ячейке в excel
Ну нет в MS Excel календаря вот и приходится пользователям либо вводить даты с клавиатуры, либо создавать свои собственные формы в виде календаря для быстрой вставки дат. В данной статье я предлагаю решение для «ленивых», для тех, кому лень делать и то, и другое.
Помучиться все-таки немного придется, а именно скачать и установить надстройку ЁXCEL, ну и еще немного почитать справку. Зато потом со вставкой дат проблем практически не будет.
Когда надстройка подключена, встаем на ячейку, в которую необходимо вставить дату и нажимаем правую клавишу мышки, в выпавшем контекстном меню выбираем последний пункт «Календарь»:
Откроется форма календаря. Выберите месяц, год и нажмите на соответствующий день:
Форма закроется, а в выбранную ячейку введется указанная дата.
Если вы хотите ввести несколько дат в разные ячейки, и вам не хочется каждый раз заходить в контекстное меню, снимите галочку напротив пункта «Закрыть при выборе даты»:
Форма перестанет закрываться при щелчке по дате. Введите несколько дат, а затем просто закройте форму.
Важно:
- Если вы встали на ячейку, в которой уже введена дата и нажали «Календарь», то форма календаря откроется, а выбранная дата в форме будет соответствовать дате, находящейся в ячейке. Если вы хотите ввести в эту ячейку дату близкую к текущей дате, нажмите на форме кнопку «Сегодня», календарь переключится на текущую дату.
- Если вы не видите в контекстном меню пункта «Календарь» — воспользуйтесь командой » Создать контекстное меню надстройки «.
Выпадающий календарь в ячейке (выбор даты на листе Excel)
Надстройка samradDatePicker (русифицированная) для облегчения ввода даты в ячейки листа Excel.
Добавляет в контекстное меня ячеек пункт выбора даты, а при выделении ячеек, содержащих дату, справа от ячейки отображает значок календаря.
Поместите файл надстройки из вложения в папку автозагрузки Excel (C:\Program Files\Microsoft Office\OFFICExx\XLSTART).
В контекстном меню ячеек появляется новый пункт — «Выбрать дату из календаря«.
Рядом с ячейками, в которые уже введена дата, будет отображаться маленький календарик, щелчок по которому вызовет большой календарь — для выбора даты.
Второй прикреплённый к статье файл — та же надстройка, только в которой неделя начинается с понедельника (в оригинале надстройки — с воскресенья)
Пароль на проект VBA — 1 (единица)
PS: Этот макрос написал не я (автор — samrad)
Файл с макросом взят на просторах интернета.
Поскольку макрос делал не я, — доработками его я не занимаюсь, никаких гарантий работы дать не могу, по использованию не консультирую.
Надстройка для выбора даты из календаря на листе Excel | 183.16 КБ |
Исправленная надстройка (первый день недели — понедельник) | 165.6 КБ |
- 296084 просмотра
Вставка элемента управления «выбор даты»
Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке) .
Выбор даты — это элемент управления, который позволяет пользователям быстро вводить даты в форму Microsoft Office InfoPath, нажав кнопку маленьком всплывающем календаре. Например можно использовать элемент выбора даты для ввода дат рождения люди страхования форме. Можно также использовать элементом выбора даты для отображения стандартных дат, например текущую дату.
В этой статье
- Когда следует использовать элемент выбора даты
- Пользовательский интерфейс
- Проблемы совместимости
- Вставьте элемент выбора даты
- Отобразить текущую дату в календарике
- Отображение текущих даты и времени в календарике
- Советы по макету
Когда следует использовать элемент выбора даты
При необходимости с помощью выбора дат:
- Разрешить пользователям ввод дат, выбранном в форме, например даты начала и окончания для определенного проекта.
- Функции сегодня и сейчас, чтобы отобразить текущую дату и время в форме.
- Отображение дат из внешнего источника данных, например выставления счетов и отгрузки дат из базы данных заказов клиентов.
На приведенном ниже рисунке элементом выбора даты используется в шаблоне формы командировку запроса для сбора отправления Дата рейса.
Вы можете настроить Выбор даты в соответствии со своими потребностями, дважды щелкнув элемент управления в шаблоне формы и измените его свойства. Например можно указать дату по умолчанию или изменить способ отображения даты в форме.
Взаимодействие с пользователем
Выбор даты выглядеть текстовые поля, за исключением того, что отображается маленький значок календаря справа от поля. Чтобы открыть всплывающий календарь, щелкните значок календаря; Когда появится календарь, щелчок даты, они будут доступны из календаря или используйте стрелки вправо и влево кнопок для прокрутки месяцы. Чтобы вставить текущую дату пользователям, они нажмите кнопку сегодня в нижней части календаря.
Совместимость
При разработке шаблона формы в InfoPath, вы можете специального режима совместимости для шаблона формы с поддержкой браузера разработки. Когда шаблона формы с поддержкой браузера, опубликованные на сервере под управлением InfoPath Forms Services, а затем поддержкой веб-браузера, форм, основанных на шаблоне формы можно просмотреть в веб-браузере. При разработке шаблона формы с поддержкой браузера некоторые элементы управления будут недоступны в области задач элементы управления, так как они не отображается в веб-браузере.
Хотя выбора даты доступны при разработке шаблона формы с поддержкой браузера, следует учитывать следующие ограничения:
- Выбор даты полностью поддерживаются только в браузерах Windows Internet Explorer. В других веб-браузеры Выбор даты в виде текстового поля, несмотря на то, что дата параметры форматирования, поддерживаются в текстовом поле.
- Замещающий текст — текст, отображаемый в элементе управления в шаблоне формы. Пример замещающий текст — «Щелкните здесь и введите». Несмотря на то, что можно оставить заполнитель параметры текста для шаблонов форм с поддержкой браузера, что текст не отображается в веб-браузеры.
Вставка элемента управления «выбор даты»
Процедура для вставки элементом выбора даты немного зависят от ли разработка шаблона формы пустой или индексация внешнего вида шаблона формы базы данных или другого внешнего источника данных.
На рисунке показано, как выглядит элементом выбора даты при выборе в Режим конструктора.
Элементы управления могут быть связанными или свободными. Если элемент управления связан, он подключен к полю или группе в источнике данных, поэтому данные, вводимые в элемент управления, сохраняются в XML-файле самой формы. Когда элемент управления является свободным, он не подключен к полю или группе, а данные, вводимые в него, не сохраняются. Если выбрать элемент управления или навести на него указатель мыши, в его правом верхнем углу , отобразится текст и значок привязки. В тексте указаны группа или поле в источнике данных, к которым привязан элемент управления. Значок указывает на то, правильно ли элемент управления привязан к полю или группе. Если привязка правильная, выводится зеленый значок. Если с привязкой что-то не так, вы увидите синий или красный значок.
Источник данных для шаблона формы состоит из полей и групп, которые отображаются в виде иерархической структуры в области задач Источник данных. Элементы выбора даты всегда связаны с полями. В приведенном ниже примере отправления управляющего элемента выбора даты в шаблоне формы привязан к полю departureDate в области задач Источник данных.
Вставьте элемент выбора даты в шаблоне пустой формы
При создании нового пустого шаблона формы по умолчанию устанавливается флажок Автоматически создавать источник данных в области задач Элементы управления. Это позволяет InfoPath автоматически создавать поля и групп в источнике данных по мере добавления элементов управления в шаблон формы. Эти поля и группы представлены в виде значков папок и файлов в области задач Источник данных.
- Поместите курсор в то место шаблона формы, куда вы хотите вставить элемент управления.
- Если область задач Элементы управления не отображается, щелкните Другие элементы управления в меню Вставка или нажмите клавиши ALT+I, C.
- В разделе Вставить элементы управления щелкните Элемент выбора даты.
- Чтобы добавить метку к элементу управления, введите сверху или слева от него текст, за которым следует двоеточие (:).
- Чтобы задать способ отображения даты в форме, дважды щелкните Выбор даты, который был добавлен в шаблоне формы.
- Перейдите на вкладку данные и нажмите кнопку Формат.
- В списке отображения даты следующим образом в диалоговом окне Формат даты выберите требуемый формат отображения.
Примечание: Можно изменить формат отображения даты только в случае тип данных текст, дату, или дата и время.
Вставьте элемент выбора даты на шаблон формы, основанного на существующий источник данных
Если основе внешнего вида шаблона формы на существующий файл язык XML (Extensible Markup), базы данных или веб-службы, InfoPath извлекает поля и группы в области задач Источник данных из соответствующего источника данных. В этом случае можно добавить, перетащив поле выбора даты из области задач Источник данных в шаблоне формы или путем вставки Выбор даты с помощью области задач элементы управления, как описано в приведенной ниже процедуре элементом выбора даты:
- Поместите курсор в то место шаблона формы, куда вы хотите вставить элемент управления.
- Если область задач Элементы управления не отображается, щелкните Другие элементы управления в меню Вставка или нажмите клавиши ALT+I, C.
- В разделе Вставить элементы управления щелкните Элемент выбора даты.
- В диалоговом окне Привязка выбора дат выберите поле, в котором нужно сохранить данные выбора даты и нажмите кнопку ОК.
- InfoPath в качестве используется имя поля или группы подпись элемента управления. При необходимости измените текст подписи.
- Чтобы задать способ отображения даты в форме, дважды щелкните Выбор даты, который был добавлен в шаблоне формы.
- На вкладке данные нажмите кнопку Формат.
- В списке отображения даты следующим образом в диалоговом окне Формат даты выберите требуемый формат отображения.
Примечание: Можно изменить формат отображения даты, только если тип данных текст, дату, или дата и время.
Совет: В области задач Источник данных также можно использовать для вставки элементов управления. В области задач Источник данных щелкните правой кнопкой мыши поле, которое требуется связать «Выбор даты» и нажмите кнопку Управления «Выбор даты» в контекстном меню.
Отобразить текущую дату в календарике
Чтобы автоматически вставить текущую дату в форме при ее открытии, можно использовать функцию сегодня с элементе выбора даты.
- Вставьте элемент выбора даты в шаблоне формы.
- Дважды щелкните Выбор даты, вставленной в шаблоне формы.
- Откройте вкладку Данные.
- В разделе Значение по умолчанию нажмите кнопку Вставить формулу .
- В диалоговом окне Вставка формулы нажмите кнопку Вставить функцию.
- В списке категорий в диалоговом окне Вставка функции выберите Дата и время.
- В списке функции выберите сегодня и нажмите кнопку ОК два раза, чтобы вернуться в диалоговое окно Свойства выбора даты. Обратите внимание, что в поле значение отображается сегодня().
- В разделе Значение по умолчанию снимите флажок обновлять это значение при пересчете результатов формулы.
Примечание: Если снять этот флажок установлен, дата, не обновляется автоматически при каждом открытии формы на основе этого шаблона формы. Идеально подходит в тех случаях, когда пользователи могут видеть дату создания формы. Можно оставить установленным флажком в случаях, когда у вас есть последнее обновление или в прошлый раз открыт на поле, которое необходимо изменять каждый раз при открытии формы дату.
Отображение текущих даты и времени в календарике
Чтобы автоматически вставить текущую дату и время в форме при ее открытии, можно использовать функцию теперь в элементе выбора даты.
- Вставьте элемент выбора даты в шаблоне формы.
- Дважды щелкните Выбор даты, вставленной в шаблоне формы.
- Откройте вкладку Данные.
- В поле тип данных выберите Дата и время (dateTime).
- Нажмите кнопку Формат.
- В диалоговом окне Формат даты и времени в списке Формат отображения времени следующим образом нужный вариант и нажмите кнопку ОК.
- В диалоговом окне Свойства выбора даты в поле Значение по умолчанию, нажмите кнопку Вставить формулу .
- В диалоговом окне Вставка формулы нажмите кнопку Вставить функцию.
- В списке категорий в диалоговом окне Вставка функции выберите Дата и время.
- В списке функциинажмите кнопку выполнить и нажмите кнопку ОК два раза, чтобы вернуться в диалоговое окно Свойства выбора даты. Обратите внимание на то, что отображается в поле значениеnow().
- В разделе Значение по умолчанию снимите флажок обновлять это значение при пересчете результатов формулы.
Примечание: Если снять этот флажок установлен, дата, не обновляется автоматически при каждом открытии формы на основе этого шаблона формы. Идеально подходит в тех случаях, когда пользователи могут видеть дату создания формы. Можно оставить установленным флажком в случаях, когда у вас есть последнее обновление или в прошлый раз открыт на поле, которое необходимо изменять каждый раз при открытии формы дату.
Советы по макету
Используйте приведенные ниже советы помогут вам настроить внешний вид, размер и других аспектов элементом выбора даты:
- Чтобы одновременно изменить размер нескольких выбора даты, выделите выбора даты, размер которых нужно изменить, в меню Формат выберите пункт Свойства и внесите необходимые изменения на вкладке размер.
- Чтобы изменить цвет элементом выбора даты или границу, Выбор даты, в меню Формат выберите, выберите команду границы и заливка и внесите необходимые изменения.
- Чтобы настроить текст, встречающийся в элементом выбора даты, используйте поля Шрифт и Размер шрифта на панели инструментов Форматирование. Чтобы одновременно изменить шрифт и размер шрифта для всех выбора даты на шаблон формы, щелкните правой кнопкой мыши Выбор даты с форматированием и нажмите кнопку Применить шрифт для всех элементов управления выбора даты в контекстном меню.
- Чтобы увидеть, как будет выглядеть ваш выбор даты с текстом, в нем, в меню Вид нажмите кнопку Образец данных. Это позволит понять, как будет выглядеть формы при заполнении его.
- В некоторых случаях текст внутри Выбор даты» и «метка слева от календарике может отображаться для немного отсутствовать выравнивания. Чтобы быстро изменить выравнивание их, дважды щелкните Выбор даты, нажмите кнопку Выровнять на вкладке размер и нажмите кнопку Применить. В случае выбора метки и даты в разных ячейках макетной таблицы, щелкните правой кнопкой мыши ячейку, содержащую подпись, в контекстном меню выберите команду Свойства таблицы и на вкладке Ячейка в группе Вертикальное выравнивание выберите Центр.
- Чтобы изменить способ отображения даты, дважды щелкните Выбор даты, перейдите на вкладку данные и нажмите кнопку » Формат «. Выбор формата отображения в диалоговом окне Формат даты.