Макрос в 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. Про это в условии ничего не сказано
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, формат поля позволяет изменять элементы даты (день, месяц, год) по отдельности.
Чтобы перемещаться между элементами даты, необходимо, или выбирать элемент мышью, или нажимать любой знак разделителя («.», «,» или «/») на клавиатуре. А клик по знаку «+» или «-», соответственно, увеличит или уменьшит значение элемента даты на единицу.
Если в элемент «год» ввести однозначное число или двузначное число, не превышающее двузначный остаток текущего года, через пару секунд автоматически добавятся первые две цифры текущего столетия (20). Если вводимое двузначное число превысит двузначный остаток текущего года, автоматически добавятся первые две цифры прошлого столетия (19).
DTPicker – это сокращение от слова DateTimePicker, не являющегося в VBA Excel ключевым словом, как и DatePicker.
Добавление DTPicker на Toolbox
Изначально на панели инструментов Toolbox нет ссылки на элемент управления DTPicker, поэтому ее нужно добавить самостоятельно.
Чтобы добавить DTPicker на панель инструментов Toolbox, кликните по ней правой кнопкой мыши и выберите из контекстного меню ссылку «Additional Controls…»:
В открывшемся окне «Additional Controls» из списка дополнительных элементов управления выберите строку «Microsoft Date and Time Picker Control»:
Свойства поля с календарем
Свойство | Описание |
---|---|
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 )Данный код должен быть размещен в модуле формы. Результат работы кода:
Применение свойства CustomFormat
Чтобы задать элементу управления DTPicker пользовательский формат отображения даты и времени, сначала необходимо присвоить свойству Format значение dtpCustom. Если этого не сделать, то, что бы мы не присвоили свойству CustomFormat, будет применен формат по умолчанию (dtpShortDate) или тот, который присвоен свойству Format.
В данном примере создается пользовательский формат для полей с календарем DTPicker1 и DTPicker2, размещенных на пользовательской форме, и отображаются в них текущие дата и время.
Результат работы кода:
Таблица специальных символов и строк, задающих пользовательский формат даты и времени (регистр символов имеет значение):
Символы и строки | Описание |
---|---|
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 – это сокращение от слова DateTimePicker, не являющегося в VBA Excel ключевым словом, как и DatePicker.
Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.4 комментария для “VBA Excel. Элемент управления DTPicker”
Здравствуйте. Помогите в следующем вопросе - в MS EXCEL 2007 создал кнопку с макросом на удаление данных с определенных ячеек.
Нужно что бы при нажатии этой кнопки вставлялась нынешняя дата, формата чч/мм/гг, без дальнейших изменений (например при открытии листа числом позже) в ячейку A2.Нашел в интернете такой код:
Но при вставке в код кнопки ничего не выходит. Ноль эмоций. (может его куда-нибуть в другое место нужно вставлять?)
Ячейки все будут защищены от изменений, кроме тех которые очищает макрос данный выше.
Как можно реализовать такую функцию: при нажатии кнопки "Очистить" вставляется дата в защищенную ячейку A2 без дальнейшей возможности изменения по средством ручного редактирования формулы или открытия листа в другие дни.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
Вставить текущую дату в ячейку бд MySQL
C помощью php-скрипта хочу добавить текущую дату в ячейку таблицы. if (isset($_GET))< $id =.
В первую ячейку DGV записать текущую дату, в следующую эту же дату, но на месяц позже
Есть датагрид, в первую ячейку нужно записать текущую дату, в следующую эту же дату, но на месяц.
Получить текущую дату без времени и вычесть другую дату
Ребята нужна помощь знатоков. Беру с сайта дату List<IWebElement> datew =.
Как получить текущую дату и время формата 12.12.2004_15:46?
как получить текущую дату и время формата 12.12.2004_15:46
Всё хорошо, вы бы еще соблюдали бы правила (вы и Alex77755.)
Желательно размещать задания по экселю и прочему в разделе VBA, там
и доброжелателей, радующихся за вас по более будет ..
Добавлено через 7 минут
От себя немного добавлю оптимизьма
среда офиса расчитанна на пассивное потребление
наподобии планшетов где никуда не нужно почти жать ..
поэтому о нормальном программировании в VBA, нельзя
говорить серьёзно, и уж темболее о какихто ActiveX
это как инородное тело для офиса ))
Читайте также: