Календарь для excel макрос

Андрей Александрович

Андрей Александрович

8 месяцев назад

Добрый день! Что изменить в макросе, что бы можно было вставлять дату в любую выделенную ячейку!

Admin

Автор


Ответить на 

Андрей Александрович

Здравствуйте, ответ отправил Вам на электронную почту

Владимир


Ответить на 

Admin

Здравствуйте, отправьте мне тоже пожалуйста на что нужно поменять для ввода даты в отдельную ячейку

Сергей

Добрый день! Что изменить в макросе, что бы можно было вставлять дату в любую выделенную ячейку!

Admin

Автор


Ответить на 

Сергей

Здравствуйте, ответил вам на электронную почту

Nursultan

Nursultan

6 месяцев назад

Добрый день! Что изменить в макросе, что бы можно было вставлять дату в любую выделенную ячейку!

Admin

Автор


Ответить на 

Nursultan

Здравствуйте, ответил вам на электронную почту

Алексей Коржов

Здравствуйте. Скачал календарь и тот же вопрос как применить календарь к любой выделеной ячейке.

Admin

Автор


Ответить на 

Алексей Коржов

Здравствуйте, ответил вам на электронную почту

Игорь

Добрый день. Не могли бы и мне отправить макрос с возможностью вставки календаря в любую выделенную ячейку. Спасибо

Admin

Автор


Ответить на 

Игорь

Здравствуйте, ответил вам на электронную почту

Сергей

Здравствуйте! Подскажите пожалуйста, что изменить в макросе, что бы можно было вставлять дату в любую выделенную ячейку!

Admin

Автор


Ответить на 

Сергей

Здравствуйте, ответ отправил вам на электронную почту

Николай

Добрый день, аналогичный вопрос. Что изменить в макросе, что бы можно было вставлять дату в любую выделенную ячейку?

Admin

Автор


Ответить на 

Николай

Здравствуйте, ответ отправил вам на электронную почту

Вера

Добрый день. Очень необходимая вещь! Что изменить в макросе, что бы можно было вставлять дату в любую ячейку определенного столбца?

Admin

Автор


Ответить на 

Вера

Здравствуйте, ответ отправил вам на электронную почту

Марина

Здравствуйте. Спасибо за доступное видео! Что изменить в макросе, что бы можно было вставлять дату в несколько ячеек?

Сергей

Здравствуйте. Мне как и всем:) подскажите пожалуйста как изменить макрос для вставки в любую выделенную ячейку

Дмитрий

Не хочется повторяться, но – “Добрый день! Что изменить в макросе, что бы можно было вставлять дату в любую выделенную ячейку!” Спасибо)

Марина

Добрый день! Как изменить макрос на работу в диапазоне, а не в одной ячейке

Admin

Автор


Ответить на 

Марина

Здравствуйте, ответил вам на электронную почту

Александр

Александр

3 месяцев назад

Добрый день! Что изменить в макросе, что бы можно было вставлять дату в любую выделенную ячейку!

Азамат

Добрый день! Что изменить в макросе, что бы можно было вставлять дату в любую выделенную ячейку!

Михаил

Добрый день! Что изменить в макросе, что бы можно было вставлять дату в любую выделенную ячейку!

Admin

Автор


Ответить на 

Михаил

Ответил на электронную почту

Артур E

Добрый день. Что изменить в макросе, что бы можно было вставлять дату в любую выделенную ячейку?

Admin

Автор


Ответить на 

Артур E

Здравствуйте, ответ отправил вам на электронную почту

дмитрий

Добрый день! Что изменить в макросе, что бы можно было вставлять дату в любую выделенную ячейку!

Евгения

Замечательно!
но можно подсказать, что изменить в макросе, что бы можно было вставлять дату в любую выделенную ячейку столбца
Заранее спасибо!

Admin

Автор


Ответить на 

Евгения

Здравствуйте, ответил на электронную почту

Владимир

но можно подсказать, что изменить в макросе, что бы можно было вставлять дату в любую выделенную ячейку столбца
Заранее спасибо!

Admin

Автор


Ответить на 

Владимир

Здравствуйте, ответ отправил вам на электронную почту

Виталий

Здравствуйте ! Что изменить в макросе, что бы можно было вставлять дату в любую выделенную ячейку!

Admin

Автор


Ответить на 

Виталий

Здравствуйте, ответ отправил вам на электронную почту

Роман Докучаев

Аналогичный вопрос по календарю, чтобы работал в любой ячейке

Роман Докучаев

Аналогичный вопрос. Что изменить в макросе, что бы можно было вставлять дату в любую выделенную ячейку! Заранее спасибо за ответ

Admin

Автор


Ответить на 

Роман Докучаев

Здравствуйте, ответ отправил вам на электронную почту

Эльвина

Добрый день! Что изменить в макросе, что бы можно было вставлять дату в любую выделенную ячейку?!

Admin

Автор


Ответить на 

Эльвина

Здравствуйте, ответ отправил вам на электронную почту

Екатерина

Екатерина

2 месяцев назад

Добрый день! Что изменить в макросе, что бы можно было вставлять дату в любую выделенную ячейку???

Admin

Автор


Ответить на 

Екатерина

Здравствуйте, ответ отправил вам на электронную почту

Павел

Здравствуйте! Подскажите можно ли при помощи подобного макроса сделать не только вставку даты но и подсчет дней. То есть есть три столбца в первом дата начала работы, во втором дата окончания работы, а в третьем количество дней потраченных на выполнение работы. Заранее спасибо!

Admin

Автор


Ответить на 

Павел

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

Ирина

Добрый день. Подскажите, пожалуйста, что изменить в макросе, что бы можно было вставлять дату в несколько ячеек одновременно на одном листе?

Андрей Ермак

Доброго времени! Что изменить в макросе, что бы можно было вставлять дату в любую выделенную ячейку!

Admin

Автор


Ответить на 

Андрей Ермак

Здравствуйте, ответ отправил вам на электронную почту

Вадим

Доброго времени! Что изменить в макросе, что бы можно было вставлять дату в любую выделенную ячейку!

Михаил

Добрый день. Спасибо за урок. Просто и быстро. Подскажите, что нужно изменить в макросе, что бы можно вставлять дату в любую выделенную ячейку. Если возможно, подскажите макрос как у Вас на видео (6 мин.). Большое спасибо.

Admin

Автор


Ответить на 

Михаил

Здравствуйте, ответил вам на электронную почту.

гога

Добрый день! Что изменить в макросе, что бы можно было вставлять дату в любую выделенную ячейку! спасибо зарании

Дмитрий

Доброго времени! Что изменить в макросе, что бы можно было вставлять дату в любую выделенную ячейку!

Михаил

Добрый день. Спасибо за ваш календарь.
Мне тоже нужна информация как вставлять дату в выделенную ячейку.

Admin

Автор


Ответить на 

Михаил

Здравствуйте, ответ отправил вам на электронную почту.

Виктория

Добрый день! Что изменить в макросе, что бы можно было вставлять дату в любую выделенную ячейку!

Aleksandr Kornienko

Добрый день! Мне тоже очень нужна эта же информация – как вставлять дату в любую выбранную ячейку. За ранее благодарю!

Александр

Добрый вечер , хотел бы тоже знать , что изменить в макросе, что бы можно было вставлять дату в любую выделенную ячейку?

Влад

Здравствуйте! Буду благодарен, если не затруднит, если поделитесь нюансом в макросе, который позволил бы, вставить дату в выделенную ячейку. Заранее спасибо!

Роман

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

Игорь

Доброго времени суток! Что изменить в макросе, что бы можно было вставлять дату в любую выделенную ячейку?
Заранее спасибо)

Последний раз редактировалось 22 дней назад Игорь ем

Владислав Николаев

Здраствуйте, а как сделать так, чтобы для других ячеек на листе тоже открывался календарь? спасибо за помощь

gutumo

Добрый день! Что изменить в макросе, что бы можно было вставлять дату в любую выделенную ячейку!

Оксана

Добрый день! Что изменить в макросе, что бы можно было вставлять дату в любую выделенную ячейку?
Заранее спасибо!

Виктор

Добрый день! Что изменить в макросе, что бы можно было вставлять дату в любую выделенную ячейку!

Николай

Здравствуйте. Я не буду оригинален и у меня тот-же вопрос.Что надо изменить в макросе чтоб дата вставлялась в активную ячейку? Спасибо.

Антон Антонов

Здравствуйте. Мучает такой же вопрос как и всех.Что надо изменить в макросе чтоб дата вставлялась в активную ячейку? Спасибо

Admin

Автор


Ответить на 

Антон Антонов

Здравствуйте, ответ отправил на электронную почту

Макросы для вывода календаря на форме или в ячейке Excel, программы для работы с датой и временем, таймеры и секундомеры

  • Выпадающий календарь в ячейке листа Excel


    Надстройка samradDatePicker (русифицированная) для облегчения ввода даты в ячейки листа Excel.

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

    Поместите файл надстройки из вложения в папку автозагрузки Excel (C:Program FilesMicrosoft OfficeOFFICExxXLSTART).
    В контекстном меню ячеек…

  • Скриншот программы формирования договоров купли-продажи


    Программа предназначена для формирования (заполнения) договоров купли-продажи.
     
    Исходными данными выступает таблица сделок, и шаблон договора, в который при помощи формул подставляются значения из заданной строки таблицы сделок.
    Для запуска программы достаточно нажать зеленую кнопку — и сразу же начнётся формирование договоров (файлов Excel из одного листа) в автоматически созданной папке…

  • Скриншот листа с секундомерами


    Программа предназначена для фиксации времени событий (хронометража) в таблице Excel в режиме онлайн.
    Типичное применение такой программы — фиксации времени прохождения кругов автогонщиками, но подойдёт данный секундомер и для учёта времени на любых других спортивных состязаниях.
     

    Особенности программы:

    изменяемое количество участников — от 1 до 20

    изменяемое количество кругов (…

  • АИСС "Абитуриент" - форма ввода данных абитуриента


    Программа АИСС «СПК» предназначена для автоматизации работы приемной комиссии колледжей и техникумов.

    АИСС обеспечивает выполнение всех необходимых операций по приему документов, поиску и анализу информации, составлению отчетов.

    Назначением программы является автоматизация труда работника приёмной комиссии учебного заведения.

    Программа обеспечивает:

    Хранение полной…

  • Форма ввода данных


    Программа позволяет упростить ввод данных в бланк заявления на пополнение счёта.
     
    Реализована проверка корректности ввода некоторых полей.
    (например, для полей «серия паспорта» и «номер паспорта» реализована проверка вводимых символов — допускается ввод только заданного количества цифр)
    Выбор большинства значений производится из выпадающих списков, что позволяет…

  • Скриншот формы поиска файлов в заданной папке


    Надстройка, позволяющая загрузить из выбранной папки список файлов на лист Excel.
    Автор: VictorM

    Особенности надстройки:

    задаваемая пользователем глубина поиска в подпапках

    простановка гиперссылок на листе Excel на найденные файлы

    вывод дополнительных характеристик файла

    (размер файла, дата создания файла, полный путь)

    изменяемая маска поиска (поиск по части имени файла, по…

  • Отображение этапов работ на шкале времени


    Программа предназначена для отображения этапов выполнения работ на шкале времени в Excel.
    В качестве исходных данных выступает таблица, заголовками которой являются названия этапов, а в строках, для каждой работы, указана дата каждого этапа.
    Шкала времени состоит из двух строк, заполненных датами при помощи формул.
    В первой строке — дата начала временного интервала, во второй строке — дата его…


  • С помощью нижеуказанного макроса, в примечание активной ячейки можно добавить изображение.
    При выделении данной ячейки — изображение будет отображаться в комментарии.
    Данный код добавляет в контекстное меню ячейки новое действие «Вставить изображение»
    Нижеуказанный макрос лучше всего поместить в «личную книгу макросов» (PERSONAL)
    В модуль «ЭтаКнига» файла PERSONAL….

  • Скриншот секундомера автогонки - 4 независимых таймера на 4 круга


    Данный секундомер предназначен для фиксации времени прохождения кругов автогонщиками.
     
    Возможен одновременный, а также выборочный, старт всех секундомеров (в примере их 4 — по одному на каждого гонщика)
    По прохождении гонщиком очередного круга достаточно нажать кнопку СТОП — и секундомер начнёт фиксировать время следующего круга.
    В последнем столбце формулой подсчитывается суммарное время…


  • Функция LastFile предназначена для поиска самого свежего файла в заданной папке

    (производится поиск файлов по маске, и из найденных файлов выбирается тот, дата последнего изменения которого максимальна)
     
    Пример использования функции:
    Sub ПримерИспользованияФункции_LastFile()
    ‘ Ищем на рабочем столе все файлы TXT, и выводим имя самого нового файла.
    ‘ Просматриваются папки с…

  • В Excel есть инструментарий для запуска макроса по расписанию, — Application.Ontime
    При помощи этого метода можно запускать макрос с заданным интервалом (например, раз в секунду)
    Но есть и другой вариант, — использование объекта htmlfile:
    (код надо поместить в модуль ЭтаКнига — ThisWorkbook)
    Private m_TimerId As Variant
    Private m_doc As Object
    Const ATTRNAME = «VBATimerHandler»
     …

  • Таблица с заполненными данными по клиентам


    Программа предназначена для вывода информации о скором наступлении события
    Каждый раз при открытии файла (и автоматической активации макроса), происходит проверка разницы между текущей датой, и датой окончания действия полиса
    (столбец номер 7 на скриншоте).
    Если эта разница находится в пределах 10 дней (параметр можно менять по своему усмотрению), то на отдельный лист выводится ссылка на…

  • Функция GetRealTime выполняет HTTP-запрос к заданному серверу,
    и из заголовка Date ответа сервера берёт текущее время и дату.
    Сделано на примере сервера Яндекса (их сайт почти всегда доступен, и работает очень быстро)
    Функция полезна, когда надо получить реальную дату (а не ту, которая выставлена на компе), — например, для вычисления оставшегося времени использования trial-версии программы….

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
Option Explicit
'---------------------------------------------------------------------------------------
' Решение       : Календарь
' Дата и время  : 14 января 2015  23:02
' Автор         : Night Ranger
'                 Яндекс.Деньги - 410012757639478
'                 [email]Exingsteem@yandex.ru[/email]
'                 [url]https://www.cyberforum.ru/vba/[/url]
' Описание      : Этот пример наглядно демонстрирует, как можно использовать календарь
'                 без подключения его к проекту, для этого нужна только форма
'                 совместимость версий любая
'
'                 В этой версии, теперь есть возможность запускать календарь от процедуры
'                 ShowCalendar, и указать там параметры SetDate и UnderRussianStandard
'                 Добавленна кнопка Ok, и форма помнит свою позицию
'---------------------------------------------------------------------------------------
Const jstart = 8, istart = 8 'Стартовые точки
Const gap = 5 'Разрыв
Const twip = 18 'Прямоугольник
Const cc = 6 'Размерность массива
Dim tt(cc, cc) As MSForms.ToggleButton, lb As MSForms.Label
Dim WithEvents fr As MSForms.Frame, WithEvents tb As MSForms.ToggleButton, WithEvents btn As MSForms.CommandButton
Dim WithEvents cbMonth As MSForms.ComboBox, WithEvents cbYear As MSForms.ComboBox
Dim WithEvents chbx As MSForms.CheckBox, WithEvents ok As MSForms.CommandButton
Dim iNext&, cr As Boolean, i&, j&, jj&, v, a$(), tbClick As Boolean, URStandard As Boolean
 
Public ThisDate As Date 'Переменная в которой храниться выбранная дата
 
Private Sub ok_Click()
    'Здесь могут быть дальнейшие инструкции после выбора даты
    'Например дату в удобном формате можно поместить в активную ячейку
    '----------------------------------------------------------------
    
    '
    '
    '
 
    ActiveCell = TextResult
    '----------------------------------------------------------------
    If chbx.Value Then Me.Hide
End Sub
 
Public Sub ShowCalendar( _
    Optional ByVal SetDate As Date, _
    Optional ByVal UnderRussianStandard As Boolean = 1)
    'ShowCalendar -Процедура вызова с параметрами
    'SetDate -Устанавливает возможность показа календаря c этой даты
    'UnderRussianStandard -Устанавливает возможность исправлять: 1 январь на 1 января
    If CDbl(SetDate) Then
        cr = False
        ThisDate = SetDate
        cbMonth.ListIndex = Month(ThisDate) - 1
        cbYear.Text = Year(ThisDate): cr = True: Update
    End If
    URStandard = UnderRussianStandard
    Me.Show
End Sub
 
Private Function TextResult$()
    TextResult = FormatDateTime(ThisDate, vbLongDate)
    If URStandard Then
        TextResult = Format(ThisDate, "[$-FC19]d mmmm yyyy г.")
        
'        a = Split(TextResult)
'        If Right$(a(1), 1) Like "[йЙьЬ]" Then
'            Mid$(a(1), Len(a(1)), 1) = "я"
'        ElseIf Right$(a(1), 1) Like "[Тт]" Then a(1) = a(1) & "а"
'        End If
'        TextResult = Join(a)
    End If
End Function
 
 
 
Private Sub UserForm_Initialize()
    Dim maxWidth&, Width1&, jNext&
    maxWidth = twip * (cc + 1) * 2: Width1 = maxWidth  2: iNext = istart: jNext = jstart
    ThisDate = Date: Me.Caption = "Календарь"
    Set fr = Me.Controls.Add("Forms.Frame.1", "fr")
    Set lb = Me.Controls.Add("Forms.Label.1", "lb")
    Set cbMonth = Me.Controls.Add("Forms.ComboBox.1", "cbMonth")
    Set cbYear = Me.Controls.Add("Forms.ComboBox.1", "cbYear")
    Set btn = Me.Controls.Add("Forms.CommandButton.1", "btn")
    Set ok = Me.Controls.Add("Forms.CommandButton.1", "ok")
    Set chbx = Me.Controls.Add("Forms.CheckBox.1", "chbx")
    
    With lb: .Move jstart, istart, Width1
        .Font.Size = 15: .Font.Bold = 1
        iNext = iNext + .Height + gap
        jNext = jNext + .Width + gap
    End With
    With cbMonth: .Move jNext, istart, (Width1 - gap * 2)  2, lb.Height: .Style = 2
        For i = 1 To 12: .AddItem Format(DateSerial(0, i, 1), "mmmm"): Next
        jNext = jNext + .Width + gap
    End With
    With cbYear: .Move jNext, istart, (Width1 - gap * 2)  2, lb.Height: .Style = 2
        For i = 1899 To Year(ThisDate) + 100
            .AddItem CStr(i)
        Next
    End With
    
    iNext = lb.Top + lb.Height + gap
    
    With fr: .Move jstart, iNext, maxWidth, twip * (cc + 1)
        .Enabled = 0
        .SpecialEffect = 0
    End With
    For i = 0 To cc: For j = 0 To cc
        Set tt(j, i) = fr.Controls.Add("Forms.ToggleButton.1", "tt" & i & j)
        With tt(j, i):  .Move j * twip * 2, i * twip, twip * 2, twip: .Locked = i = 0
        .ForeColor = IIf(j >= 5, vbRed, vbBlue)
        .BackColor = IIf(i, vbButtonFace, vbScrollBars)
    End With: Next j, i
    jNext = jstart
    With ok: .Move jNext, iNext + fr.Height + gap, lb.Width, lb.Height: .Caption = "Ok"
        .AutoSize = 1: jNext = jNext + .Width + gap
    End With
    
    With btn: .Move jNext, iNext + fr.Height + gap, lb.Width, lb.Height: .Caption = "Сегодня"
        .AutoSize = 1: jNext = jNext + .Width + gap
    End With
 
    With chbx: .Move jNext, btn.Top, (jstart + maxWidth) - jNext
        .Caption = "Скрываться после выбора или Ok"
        .Value = GetSetting("Ms Office", "Calendar", "chbx", chbx.Value)
    End With
    
 
    Call btn_Click: Filling: lbUpdate
 
    With Me
        .Height = btn.Top + twip * 3
        .Width = jstart + maxWidth + twip
        If Application.Left > -100 Then
            .StartUpPosition = 0
            .Left = GetSetting("Ms Office", "Calendar", "Left", .Left)
            .Top = GetSetting("Ms Office", "Calendar", "Top", .Top)
            If .Left <= 0 Or .Left > (Application.Left + Application.Width - 100) Or _
            .Top <= 0 Or .Top > (Application.Top + Application.Height - 100) Then
                'Если сохраненная ранее позиция вышла за предел экрана
                .StartUpPosition = 2
            End If
        End If
    End With
 
End Sub
 
Private Sub lbUpdate()
    If cr = False Then Exit Sub
    lb.Caption = Format(ThisDate, "mmmm yyyy")
    If Split(lb.Caption)(0) <> cbMonth.Text Then
        ThisDate = DateSerial(Year(ThisDate), cbMonth.ListIndex + 2, 0)
         lb.Caption = Format(ThisDate, "mmmm yyyy")
    End If
End Sub
 
Private Sub btn_Click()
    cr = False
    ThisDate = Date
    cbMonth.ListIndex = Month(ThisDate) - 1
    cbYear.Text = Year(ThisDate): cr = True: Update
    
End Sub
Private Sub cbMonth_Click()
    If cr = False Then Exit Sub
    ThisDate = DateSerial(Year(ThisDate), cbMonth.ListIndex + 1, Day(ThisDate))
    Update
End Sub
Private Sub cbYear_Click()
     If cr = False Then Exit Sub
    ThisDate = DateSerial(cbYear.Text, Month(ThisDate), Day(ThisDate)): Update
End Sub
 
Private Sub UserForm_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    On Error Resume Next: Err.Clear: Set tb = tt((X - jstart)  twip  2, (Y - iNext)  twip)
    If Err = 0 Then
        With tb
            If .Enabled And .Locked = False Then
                For i = 1 To cc: For j = 0 To cc: With tt(j, i)
                    If (.Name = tb.Name) Then
                        ThisDate = DateSerial(cbYear.Text, cbMonth.ListIndex + 1, .Caption)
                        .Value = 1: tbClick = 1: tb_Click: tbClick = 0 'Выбор произведен !
                    Else: .Value = 0
                    End If
    End With: Next j, i: End If: End With: End If
End Sub
 
Private Sub chbx_Click()
    If cr = False Then Exit Sub
    SaveSetting "Ms Office", "Calendar", "chbx", chbx.Value
End Sub
 
Sub Filling()
    For j = 0 To cc  'Понедельники вторники даты и тд
        With tt(j, 0): .Caption = WeekdayName(j + 1, 1, vbMonday): .Font.Bold = 1: End With
    Next: j = 0
    While Weekday(DateSerial(Year(ThisDate), Month(ThisDate), j)) <> 1: j = j - 1: Wend: jj = j
    For i = 1 To cc: For j = 0 To cc: v = DateSerial(Year(ThisDate), Month(ThisDate), jj) + 1
        With tt(j, i): .Caption = Day(v): .Enabled = Month(v) = Month(ThisDate)
            .Value = .Enabled And .Caption = Day(ThisDate)
    End With: jj = jj + 1: Next j, i
End Sub
Private Sub Update(): Call lbUpdate:  Filling: End Sub
Private Sub tb_Click(): If tbClick = False Then Exit Sub Else ok_Click
End Sub
 
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    With Me 'Перед закрытием запомнить позицию
        SaveSetting "Ms Office", "Calendar", "Left", .Left
        SaveSetting "Ms Office", "Calendar", "Top", .Top
    End With
End Sub

Вам когда-нибудь хотелось, чтобы в Вашем приложении Excel или в любом другом MS Office приложении можно было выбирать дату из календаря при вставке ее, например, в ячейку или на форму, а не вводить вручную. Такая возможность есть!

Я в своих приложениях везде использую такой календарь. Большое спасибо автору, который создал этот календарь. Код в некоторых местах я переписал, чтобы он был адаптирован под удобное использование во многих проектах. Можете скачать архив с Excel-книгой этого календаря. API для работы с календарем очень простое (посмотрите код рабочего листа, где используется обработчик события нажатия на кнопку).

Для работы с календарем в Вашем Excel-приложении Вам всего лишь нужно импортировать один модуль, два класса и форму календаря в Вашу Excel-книгу и прописать в любом Вашем модуле несколько строк API-кода для работы с календарем, и все. Пользуйтесь на здоровье!

Ссылка на архив с книгой Excel и модули календаря: Скачать из Яндекс.Диска

Всплывающий календарь

Если вам часто приходится вводить даты в ячейки листа, то делать это вручную неудобно. Для ввода именно сегодняшней даты можно воспользоваться функцией СЕГОДНЯ (TODAY), сочетанием клавиш Ctrl+; или макросом, но если нужны разные даты из прошлого или будущего, то вбивать их руками долго. 

К сожалению, в стандартном арсенале средств Excel нет встроенного выпадающего календаря (в отличие от Word), да еще и в последних версиях, начиная с Excel 2007, Microsoft зачем-то убрала из стандартного комплекта поставки библиотеку mscalc.osx, которая позволяла быстро создать пользовательскую форму с календарем.

Естественно, это «узкое место» не осталось без внимания опытных пользователей и экспертов Excel MVP, которые оперативно создали несколько интерактивных календарей на макросах для удобного ввода дат. Вот подборка неплохих, на мой взгляд, бесплатных вариантов:

calendar-ron.png Windows Date Picker

Автор: Ron de Bruin

Цена: бесплатно

Ссылка

  • Устанавливается как надстройка (есть версии для старых Excel 200-2003 и для новых Excel 2007-2010 и, отдельно, для Excel 2013. 
  • Вызывается через контекстное меню ячейки (правой кнопкой мыши по ячейке — Date Picker). 
  • Позволяет вставлять дату в нескольких форматах, вплоть до номера недели (по разным стандартам). 
  • Автоматически подстраивается под российский стандарт недели (с понедельника).

calendar-jim-cone.png Excel Date Picker

Автор: Jim Cone

Цена: бесплатно

Ссылка

  • Макрос (не надстройка!) с открытым кодом VBA — можно посмотреть как всё устроено и модернизировать «под себя». Но надо копировать код в каждый используемый файл и вызывать нажатием на кнопку или сочетанием клавиш, т.е. универсальность хромает. 
  • Удобная система прокрутки лет и месяцев. 
  • Российскую неделю (с понедельника) знает. 
  • Каких-либо настроек нет.
calendar-vertex.png Mini Calendar and Date Picker

Автор: VERTEX

Цена: бесплатно.

Ссылка в Office Apps Store

  • Работает только в Excel 2013, добавляется через магазин приложений Office App Store на вкладке Вставка — Приложения для Office (Insert — Office Apps Store)
  • Вставляется на лист как постоянный графический объект и добавляет выбранную дату в любую выделенную предварительно ячейку. 
  • Умеет менять стандарты недели, отображать номера недель, вводить не только дату, но и время. 
  • Есть возможность задавать темы оформления. 
  • Нет кнопки перехода к текущему дню.
datepicker.jpg Date Picker

Автор: Sam Radakovitz, руководитель команды программистов Excel в Microsoft

Цена: бесплатно 

Сайт автора умер, ссылки не работают, но можно скачать заботливо сохраненную мной когда-то копию здесь.

  • Устанавливается как надстройка. 
  • Вызывается через правую кнопку мыши по ячейке — Pick from calendar или с помощью удобного всплывающего значка календарика справа от ячейки с датой. 
  • Красивый дизайн, отображение количества дней до выбранной даты от текущей. 
  • Использует USA-стандарт недели (отображает неделю с воскресенья). 
  • Настроек нет. 

 

P.S.

Установка надстроек:

  • в Excel 2003 и старше — меню Сервис — Надстройки — Обзор (Tools — Add-ins — Browse)
  • в Excel 2007 и новее — Файл — Параметры — Надстройки — Перейти — Обзор (File — Options — Add-ins — Go To — Browse)

Ссылки по теме

  • Всплывающий календарь из надстройки PLEX
  • Автоматический ввод даты при изменении ячейки

Понравилась статья? Поделить с друзьями:
  • Календарь для excel 2019
  • Калькулятор в excel для расчета ипотеки
  • Калькулятор в excel 2010
  • Калькулятор vba excel скачать
  • Калькулятор vba excel код