Макрос в excel вставка даты в

Обновлено: 19.05.2024

Создайте новую книгу Excel. Переименуйте ее в “Объектная модель”.

Создайте в ней процедуру, которая будет переименовывать первый лист (новое имя листа — “Объектная модель”).

После этого, обращаясь в коде к этому листу по имени, процедура должна заносить в ячейку A1 текущую дату.
Вот как получилось у меня(только учась создавать макросы)
[vba]

Но проблема в том, что дата не открывается автоматически. Нужно сделать так, чтобы он начинался автоматически при открытии страницы, и в ячейке A1 прописывалась дата через =NOW()
Подскажите пожалуйста, где ошибка. Спасибо.

Создайте новую книгу Excel. Переименуйте ее в “Объектная модель”.

Создайте в ней процедуру, которая будет переименовывать первый лист (новое имя листа — “Объектная модель”).

После этого, обращаясь в коде к этому листу по имени, процедура должна заносить в ячейку A1 текущую дату.
Вот как получилось у меня(только учась создавать макросы)
[vba]

Но проблема в том, что дата не открывается автоматически. Нужно сделать так, чтобы он начинался автоматически при открытии страницы, и в ячейке A1 прописывалась дата через =NOW()
Подскажите пожалуйста, где ошибка. Спасибо. laik

Создайте в ней процедуру, которая будет переименовывать первый лист (новое имя листа — “Объектная модель”).

После этого, обращаясь в коде к этому листу по имени, процедура должна заносить в ячейку A1 текущую дату.
Вот как получилось у меня(только учась создавать макросы)
[vba]

Но проблема в том, что дата не открывается автоматически. Нужно сделать так, чтобы он начинался автоматически при открытии страницы, и в ячейке A1 прописывалась дата через =NOW()
Подскажите пожалуйста, где ошибка. Спасибо. Автор - laik
Дата добавления - 01.05.2020 в 09:46

Нужно сделать так, чтобы он (1) начинался автоматически при открытии страницы (2), и в ячейке A1 прописывалась дата через =NOW() (3)
1. Он - это кто? Макрос?
2. Про это в условии ничего не сказано
3. Это будет формула. А у Вас в задании просто заносить дату. Не формулой, а просто дату
Еще
4. Первый лист вовсе не обязательно называется "Лист1". Поэтому работаем не с Sheets("Лист1"), а с листом с индексом, равным 1
5. Select на лист и на ячейку вовсе не обязательны - замедляют работу, ухудшают читабельность кода и вообще моветон
6. Если нужно, чтобы дата изменялась при открытии страницы (предположу, что это значит "при активации листа"), то немного иначе все. Отдельным макросом переименовываем лист, а вторым макросом, лежащим в модуле листа (см. справку), при активации листа переписываем дату
[vba] [/vba]
7. Если же дату нужно переписывать не при активации листа, а при открытии книги (так было бы грамотнее, если, конечно, книга не бывает открыта в 12 ночи, когда дата сменяется), то код для даты пишем ужа в модуле книги
[vba] Нужно сделать так, чтобы он (1) начинался автоматически при открытии страницы (2), и в ячейке A1 прописывалась дата через =NOW() (3)
1. Он - это кто? Макрос?
2. Про это в условии ничего не сказано
3. Это будет формула. А у Вас в задании просто заносить дату. Не формулой, а просто дату
Еще
4. Первый лист вовсе не обязательно называется "Лист1". Поэтому работаем не с Sheets("Лист1"), а с листом с индексом, равным 1
5. Select на лист и на ячейку вовсе не обязательны - замедляют работу, ухудшают читабельность кода и вообще моветон
6. Если нужно, чтобы дата изменялась при открытии страницы (предположу, что это значит "при активации листа"), то немного иначе все. Отдельным макросом переименовываем лист, а вторым макросом, лежащим в модуле листа (см. справку), при активации листа переписываем дату
[vba] [/vba]
7. Если же дату нужно переписывать не при активации листа, а при открытии книги (так было бы грамотнее, если, конечно, книга не бывает открыта в 12 ночи, когда дата сменяется), то код для даты пишем ужа в модуле книги
[vba] Нужно сделать так, чтобы он (1) начинался автоматически при открытии страницы (2), и в ячейке A1 прописывалась дата через =NOW() (3)
1. Он - это кто? Макрос?
2. Про это в условии ничего не сказано
3. Это будет формула. А у Вас в задании просто заносить дату. Не формулой, а просто дату
Еще
4. Первый лист вовсе не обязательно называется "Лист1". Поэтому работаем не с Sheets("Лист1"), а с листом с индексом, равным 1
5. Select на лист и на ячейку вовсе не обязательны - замедляют работу, ухудшают читабельность кода и вообще моветон
6. Если нужно, чтобы дата изменялась при открытии страницы (предположу, что это значит "при активации листа"), то немного иначе все. Отдельным макросом переименовываем лист, а вторым макросом, лежащим в модуле листа (см. справку), при активации листа переписываем дату
[vba] [/vba]
7. Если же дату нужно переписывать не при активации листа, а при открытии книги (так было бы грамотнее, если, конечно, книга не бывает открыта в 12 ночи, когда дата сменяется), то код для даты пишем ужа в модуле книги
[vba] [/vba] Автор - _Boroda_
Дата добавления - 01.05.2020 в 11:21

Создайте в нем процедуру, которая будет переименовывать первый лист (новое имя листа — “Объектная модель”).

После этого, обращаясь в коде к этому листу по имени, процедура должна заносить в ячейку A1 текущую дату."
Но после того,как я написала свой макрос
[vba]

[/vba]
мне ответили:
"К сожалению, макрос не сработал. Нужно сделать так, чтобы он начинался автоматически при открытии страницы, и в ячейке A1 прописывалась дата через =NOW()"

Спасибо за помощь

Создайте в нем процедуру, которая будет переименовывать первый лист (новое имя листа — “Объектная модель”).

После этого, обращаясь в коде к этому листу по имени, процедура должна заносить в ячейку A1 текущую дату."
Но после того,как я написала свой макрос
[vba]

[/vba]
мне ответили:
"К сожалению, макрос не сработал. Нужно сделать так, чтобы он начинался автоматически при открытии страницы, и в ячейке A1 прописывалась дата через =NOW()"

Спасибо за помощь laik

Создайте в нем процедуру, которая будет переименовывать первый лист (новое имя листа — “Объектная модель”).

После этого, обращаясь в коде к этому листу по имени, процедура должна заносить в ячейку A1 текущую дату."
Но после того,как я написала свой макрос
[vba]

[/vba]
мне ответили:
"К сожалению, макрос не сработал. Нужно сделать так, чтобы он начинался автоматически при открытии страницы, и в ячейке A1 прописывалась дата через =NOW()"

Спасибо за помощь Автор - laik
Дата добавления - 01.05.2020 в 17:07

Таблицу аргументов (значений) параметра interval смотрите в параграфе «Приложение 1».

Примечание к таблице аргументов: три символа – y, d, w – указывают функции DateAdd на один день, который необходимо прибавить к исходной дате number раз.

Пример

MsgBox "31.01.2021 + 1 месяц crayon-h"> & DateAdd ( "m" , 1 , "31.01.2021" ) 'Результат: 28.02.2021 MsgBox "Сегодня + 3 года crayon-h"> & DateAdd ( "yyyy" , 3 , Date ) MsgBox "Сегодня - 2 недели crayon-h"> & DateAdd ( "ww" , - 2 , Date ) MsgBox "10:22:14 + 10 минут crayon-h"> & DateAdd ( "n" , 10 , "10:22:14" ) 'Результат: 10:32:14

Функция DateDiff

DateDiff – это функция, которая возвращает количество указанных интервалов времени между двумя датами. Тип возвращаемого значения – Variant/Long.

Синтаксис

DateDiff ( interval , date1 , date2 , [ firstdayofweek ] , [ firstweekofyear ] )

Параметры

Параметр Описание
interval Обязательный параметр. Строковое выражение из спецсимволов, представляющее интервал времени, количество которых (интервалов) требуется вычислить между двумя датами.
date1, date2 Обязательные параметры. Значения типа Variant/Date , представляющие две даты, между которыми вычисляется количество указанных интервалов.
firstdayofweek Необязательный параметр. Константа, задающая первый день недели. По умолчанию – воскресенье.
firstweekofyear Необязательный параметр. Константа, задающая первую неделю года. По умолчанию – неделя, в которую входит 1 января.

Таблицу аргументов (значений) параметра interval смотрите в параграфе «Приложение 1».

Примечание к таблице аргументов: в отличие от функции DateAdd , в функции DateDiff спецсимвол "w" , как и "ww" , обозначает неделю. Но расчет осуществляется по разному. Подробнее об этом на сайте разработчиков.

Параметры firstdayofweek и firstweekofyear определяют правила расчета количества недель между датами.

Таблицы констант из коллекций firstdayofweek и firstweekofyear смотрите в параграфах «Приложение 2» и «Приложение 3».

Элемент управления DTPicker

При вызове календаря пользовательская форма теряет фокус – это видно на изображении. При редактировании даты непосредственно в текстовом поле DTPicker, формат поля позволяет изменять элементы даты (день, месяц, год) по отдельности.

Чтобы перемещаться между элементами даты, необходимо, или выбирать элемент мышью, или нажимать любой знак разделителя («.», «,» или «/») на клавиатуре. А клик по знаку «+» или «-», соответственно, увеличит или уменьшит значение элемента даты на единицу.

Если в элемент «год» ввести однозначное число или двузначное число, не превышающее двузначный остаток текущего года, через пару секунд автоматически добавятся первые две цифры текущего столетия (20). Если вводимое двузначное число превысит двузначный остаток текущего года, автоматически добавятся первые две цифры прошлого столетия (19).

DTPicker – это сокращение от слова DateTimePicker, не являющегося в VBA Excel ключевым словом, как и DatePicker.

Добавление DTPicker на Toolbox

Изначально на панели инструментов Toolbox нет ссылки на элемент управления DTPicker, поэтому ее нужно добавить самостоятельно.

Чтобы добавить DTPicker на панель инструментов Toolbox, кликните по ней правой кнопкой мыши и выберите из контекстного меню ссылку «Additional Controls…»:

Добавление дополнительных элементов управления на Toolbox

В открывшемся окне «Additional Controls» из списка дополнительных элементов управления выберите строку «Microsoft Date and Time Picker Control»:

Выбор DTPicker в окне «Additional Controls»

Значок элемента управления DTPicker на панели инструментов Toolbox

Свойства поля с календарем

Свойство Описание
CalendarBackColor Заливка (фон) календаря без заголовка.
CalendarForeColor Цвет шрифта чисел выбранного в календаре месяца.
CalendarTitleBackColor Заливка заголовка календаря и фон выбранной даты.
CalendarTitleForeColor Цвет шрифта заголовка (месяц и год) и выбранного в календаре числа.
CalendarTrailingForeColor Цвет шрифта чисел предыдущего и следующего месяца.
CheckBox В значении True отображает встроенный в DTPicker элемент управления CheckBox. По умолчанию – False.
ControlTipText Текст всплывающей подсказки при наведении курсора на DTPicker.
CustomFormat Пользовательский формат даты и времени. Работает, когда свойству Format присвоено значение dtpCustom (3).
Day (Month, Year) Задает или возвращает день (месяц, год).
DayOfWeek Задает или возвращает день недели от 1 до 7, отсчет начинается с воскресенья.
Enabled Возможность раскрытия календаря, ввода и редактирования даты/времени. True – все перечисленные опции включены, False – выключены (элемент управления становится серым).
Font Шрифт отображаемого значения в отформатированном поле элемента управления.
Format Формат отображаемого значения в поле элемента управления DTPicker, может принимать следующие значения: dtpCustom (3), dtpLongDate (0), dtpShortDate (1) (по умолчанию) и dtpTime (2).
Height Высота элемента управления DTPicker с нераскрытым календарем.
Hour (Minute, Second) Задает или возвращает часы (минуты, секунды).
Left Расстояние от левого края внутренней границы пользовательской формы до левого края элемента управления.
MaxDate Максимальное значение даты, которое может быть выбрано в элементе управления (по умолчанию – 31.12.9999).
MinDate Минимальное значение даты, которое может быть выбрано в элементе управления (по умолчанию – 01.01.1601).
TabIndex Определяет позицию элемента управления в очереди на получение фокуса при табуляции, вызываемой нажатием клавиш «Tab», «Enter». Отсчет начинается с нуля.
Top Расстояние от верхнего края внутренней границы пользовательской формы до верхнего края элемента управления.
UpDown Отображает счетчик вместо раскрывающегося календаря. True – отображается SpinButton, False – отображается календарь (по умолчанию).
Value Задает или возвращает значение (дата и/или время) элемента управления.
Visible Видимость поля с календарем. True – DTPicker отображается на пользовательской форме, False – DTPicker скрыт.
Width Ширина элемента управления DTPicker с нераскрытым календарем.

DTPicker – это сокращение от слова DateTimePicker, не являющегося в VBA Excel ключевым словом, как и DatePicker.

Примеры кода VBA Excel с DTPicker

Программное создание DTPicker

Динамическое создание элемента управления DTPicker с помощью кода VBA Excel на пользовательской форме с любым именем:

Set myDTPicker = . Controls . Add ( "MSComCtl2.DTPicker" , "dtp" , True )

Данный код должен быть размещен в модуле формы. Результат работы кода:

Динамически созданный DTPicker

Применение свойства CustomFormat

Чтобы задать элементу управления DTPicker пользовательский формат отображения даты и времени, сначала необходимо присвоить свойству Format значение dtpCustom. Если этого не сделать, то, что бы мы не присвоили свойству CustomFormat, будет применен формат по умолчанию (dtpShortDate) или тот, который присвоен свойству Format.

В данном примере создается пользовательский формат для полей с календарем DTPicker1 и DTPicker2, размещенных на пользовательской форме, и отображаются в них текущие дата и время.

DTPicker - отображение даты и времени в пользовательском формате

Результат работы кода:

Таблица специальных символов и строк, задающих пользовательский формат даты и времени (регистр символов имеет значение):

Символы и строки Описание
d День месяца из одной или двух цифр.
dd День месяца из двух цифр. К числу из одной цифры впереди добавляется ноль.
ddd Сокращенное название дня недели из двух символов (Пн, Вт и т.д.).
dddd Полное название дня недели.
h Час из одной или двух цифр в 12-часовом формате.
hh Час из двух цифр в 12-часовом формате. К часу из одной цифры впереди добавляется ноль.
H Час из одной или двух цифр в 24-часовом формате.
HH Час из двух цифр в 24-часовом формате. К часу из одной цифры впереди добавляется ноль.
m Минута из одной или двух цифр.
mm Минута из двух цифр. К минуте из одной цифры впереди добавляется ноль.
M Месяц из одной или двух цифр.
MM Месяц из двух цифр. К месяцу из одной цифры впереди добавляется ноль.
MMM Сокращенное название месяца из трех символов.
MMMM Полное название месяца.
s Секунда из одной или двух цифр.
ss Секунда из двух цифр. К секунде из одной цифры впереди добавляется ноль.
y Год из одной или двух последних цифр.
yy Год из двух последних цифр.
yyyy Год из четырех цифр.

Создание границ интервала дат

Простенький пример, как задать интервал дат с начала месяца до текущего дня с помощью двух элементов управления DTPicker:

Результат работы кода, запущенного 23.11.2020:

Интервал дат, заданный с помощью двух элементов управления DTPicker

DTPicker – это сокращение от слова DateTimePicker, не являющегося в VBA Excel ключевым словом, как и DatePicker.

Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

4 комментария для “VBA Excel. Элемент управления DTPicker”

Здравствуйте. Помогите в следующем вопросе - в MS EXCEL 2007 создал кнопку с макросом на удаление данных с определенных ячеек.

Нужно что бы при нажатии этой кнопки вставлялась нынешняя дата, формата чч/мм/гг, без дальнейших изменений (например при открытии листа числом позже) в ячейку A2.
Нашел в интернете такой код:
Но при вставке в код кнопки ничего не выходит. Ноль эмоций. (может его куда-нибуть в другое место нужно вставлять?)
Ячейки все будут защищены от изменений, кроме тех которые очищает макрос данный выше.
Как можно реализовать такую функцию: при нажатии кнопки "Очистить" вставляется дата в защищенную ячейку A2 без дальнейшей возможности изменения по средством ручного редактирования формулы или открытия листа в другие дни.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

Вставить текущую дату в ячейку бд MySQL
C помощью php-скрипта хочу добавить текущую дату в ячейку таблицы. if (isset($_GET))< $id =.


В первую ячейку DGV записать текущую дату, в следующую эту же дату, но на месяц позже
Есть датагрид, в первую ячейку нужно записать текущую дату, в следующую эту же дату, но на месяц.


Получить текущую дату без времени и вычесть другую дату
Ребята нужна помощь знатоков. Беру с сайта дату List&lt;IWebElement&gt; datew =.

Как получить текущую дату и время формата 12.12.2004_15:46?
как получить текущую дату и время формата 12.12.2004_15:46

Спасибо тебе огромное, помогло. Для тех кому еще поможет данный ответ, уточню, этот код идет в кнопку ActiveX )) Спасибо тебе огромное, помогло. Для тех кому еще поможет данный ответ, уточню, этот код идет в кнопку ActiveX ))

Всё хорошо, вы бы еще соблюдали бы правила (вы и Alex77755.)
Желательно размещать задания по экселю и прочему в разделе VBA, там
и доброжелателей, радующихся за вас по более будет ..

Добавлено через 7 минут
От себя немного добавлю оптимизьма
среда офиса расчитанна на пассивное потребление
наподобии планшетов где никуда не нужно почти жать ..
поэтому о нормальном программировании в VBA, нельзя
говорить серьёзно, и уж темболее о какихто ActiveX
это как инородное тело для офиса ))

Читайте также: