Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/#установка даты в ячейку - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » #установка даты в ячейку (Макросы/Sub)
#установка даты в ячейку
laik Дата: Пятница, 01.05.2020, 09:46 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

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

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

После этого, обращаясь в коде к этому листу по имени, процедура должна заносить в ячейку A1 текущую дату.
Вот как получилось у меня(только учась создавать макросы)
[vba]
Код
Sub unification()
'даем имя листу
Sheets("Лист1").Select
Sheets("Лист1").Name = "Объектная модель"
'на данном листе
Sheets("Объектная модель").Select
'в ячейке А1 вводим формулу тдата
Range("A1").Select
ActiveCell.FormulaR1C1 = "=NOW()"

End Sub
[/vba]

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


Сообщение отредактировал laik - Пятница, 01.05.2020, 09:57
 
Ответить
СообщениеСоздайте новую книгу Excel. Переименуйте ее в “Объектная модель”.

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

После этого, обращаясь в коде к этому листу по имени, процедура должна заносить в ячейку A1 текущую дату.
Вот как получилось у меня(только учась создавать макросы)
[vba]
Код
Sub unification()
'даем имя листу
Sheets("Лист1").Select
Sheets("Лист1").Name = "Объектная модель"
'на данном листе
Sheets("Объектная модель").Select
'в ячейке А1 вводим формулу тдата
Range("A1").Select
ActiveCell.FormulaR1C1 = "=NOW()"

End Sub
[/vba]

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

Автор - laik
Дата добавления - 01.05.2020 в 09:46
_Boroda_ Дата: Пятница, 01.05.2020, 11:21 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 15946
Репутация: 6198 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Два варианта
[vba]
Код
Sub unification() ' с проверкой на то, что первый лист уже называется "Объектная модель"
' но это наверное лишнее, ведь по условию задачи мы книгу только что создали
    shn_ = "Объектная модель"
    If Sheets(1).Name <> shn_ Then
        Sheets(1).Name = shn_
    End If
    Sheets(shn_).Range("A1") = Date
End Sub

Sub unification1() ' без проверки
    Sheets(1).Name = "Объектная модель"
    Sheets("Объектная модель").Range("A1") = Date
End Sub
[/vba]
Нужно сделать так, чтобы он (1) начинался автоматически при открытии страницы (2), и в ячейке A1 прописывалась дата через =NOW() (3)

1. Он - это кто? Макрос?
2. Про это в условии ничего не сказано
3. Это будет формула. А у Вас в задании просто заносить дату. Не формулой, а просто дату
Еще
4. Первый лист вовсе не обязательно называется "Лист1". Поэтому работаем не с Sheets("Лист1"), а с листом с индексом, равным 1
5. Select на лист и на ячейку вовсе не обязательны - замедляют работу, ухудшают читабельность кода и вообще моветон
6. Если нужно, чтобы дата изменялась при открытии страницы (предположу, что это значит "при активации листа"), то немного иначе все. Отдельным макросом переименовываем лист, а вторым макросом, лежащим в модуле листа (см. справку), при активации листа переписываем дату
[vba]
Код
Private Sub Worksheet_Activate()
    Range("A1") = Date
End Sub
[/vba]
7. Если же дату нужно переписывать не при активации листа, а при открытии книги (так было бы грамотнее, если, конечно, книга не бывает открыта в 12 ночи, когда дата сменяется), то код для даты пишем ужа в модуле книги
[vba]
Код
Private Sub Workbook_Open()
    Sheets("Объектная модель").Range("A1") = Date
End Sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеДва варианта
[vba]
Код
Sub unification() ' с проверкой на то, что первый лист уже называется "Объектная модель"
' но это наверное лишнее, ведь по условию задачи мы книгу только что создали
    shn_ = "Объектная модель"
    If Sheets(1).Name <> shn_ Then
        Sheets(1).Name = shn_
    End If
    Sheets(shn_).Range("A1") = Date
End Sub

Sub unification1() ' без проверки
    Sheets(1).Name = "Объектная модель"
    Sheets("Объектная модель").Range("A1") = Date
End Sub
[/vba]
Нужно сделать так, чтобы он (1) начинался автоматически при открытии страницы (2), и в ячейке A1 прописывалась дата через =NOW() (3)

1. Он - это кто? Макрос?
2. Про это в условии ничего не сказано
3. Это будет формула. А у Вас в задании просто заносить дату. Не формулой, а просто дату
Еще
4. Первый лист вовсе не обязательно называется "Лист1". Поэтому работаем не с Sheets("Лист1"), а с листом с индексом, равным 1
5. Select на лист и на ячейку вовсе не обязательны - замедляют работу, ухудшают читабельность кода и вообще моветон
6. Если нужно, чтобы дата изменялась при открытии страницы (предположу, что это значит "при активации листа"), то немного иначе все. Отдельным макросом переименовываем лист, а вторым макросом, лежащим в модуле листа (см. справку), при активации листа переписываем дату
[vba]
Код
Private Sub Worksheet_Activate()
    Range("A1") = Date
End Sub
[/vba]
7. Если же дату нужно переписывать не при активации листа, а при открытии книги (так было бы грамотнее, если, конечно, книга не бывает открыта в 12 ночи, когда дата сменяется), то код для даты пишем ужа в модуле книги
[vba]
Код
Private Sub Workbook_Open()
    Sheets("Объектная модель").Range("A1") = Date
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 01.05.2020 в 11:21
laik Дата: Пятница, 01.05.2020, 17:07 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2019
Спасибо, попробую исправить и отпишусь.
задание было такое:
"Создайте новую книгу Excel. Переименуйте ее в “Объектная модель”.

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

После этого, обращаясь в коде к этому листу по имени, процедура должна заносить в ячейку A1 текущую дату."
Но после того,как я написала свой макрос
Sub unification()
'даем имя листу
Sheets("Лист1").Select
Sheets("Лист1").Name = "Объектная модель"
'на данном листе
Sheets("Объектная модель").Select
'в ячейке А1 вводим формулу тдата
Range("A1").Select
ActiveCell.FormulaR1C1 = "=NOW()"

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

Спасибо за помощь
 
Ответить
СообщениеСпасибо, попробую исправить и отпишусь.
задание было такое:
"Создайте новую книгу Excel. Переименуйте ее в “Объектная модель”.

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

После этого, обращаясь в коде к этому листу по имени, процедура должна заносить в ячейку A1 текущую дату."
Но после того,как я написала свой макрос
Sub unification()
'даем имя листу
Sheets("Лист1").Select
Sheets("Лист1").Name = "Объектная модель"
'на данном листе
Sheets("Объектная модель").Select
'в ячейке А1 вводим формулу тдата
Range("A1").Select
ActiveCell.FormulaR1C1 = "=NOW()"

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

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

Автор - laik
Дата добавления - 01.05.2020 в 17:07
_Boroda_ Дата: Пятница, 01.05.2020, 20:21 | Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 15946
Репутация: 6198 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
- Прочитайте Правила форума
- Оформите код тегами (в режиме правки поста выделите код и нажмите кнопку #, пояснялка здесь)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение- Прочитайте Правила форума
- Оформите код тегами (в режиме правки поста выделите код и нажмите кнопку #, пояснялка здесь)

Автор - _Boroda_
Дата добавления - 01.05.2020 в 20:21
Мир MS Excel » Вопросы и решения » Вопросы по VBA » #установка даты в ячейку (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс цитирования
© 2010-2020 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!