Создайте новую книгу 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() Подскажите пожалуйста, где ошибка. Спасибо.
Создайте новую книгу 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
Сообщение отредактировал laik - Пятница, 01.05.2020, 09:57
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
Нужно сделать так, чтобы он (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]
Два варианта [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
Нужно сделать так, чтобы он (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
Спасибо, попробую исправить и отпишусь. задание было такое: "Создайте новую книгу 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()"
Спасибо за помощь
Спасибо, попробую исправить и отпишусь. задание было такое: "Создайте новую книгу 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()"