Здравствуйте. Можно ли в экселе придумать такую штуку: При открытии документа появляется окно куда надо вбить пересменну "Дата" которую потом можно было бы использовать в формуле. По дефолту он бы показывал в окошке сегодняшную дату но ее можно было бы изменить на любую.
Спасибо.
Здравствуйте. Можно ли в экселе придумать такую штуку: При открытии документа появляется окно куда надо вбить пересменну "Дата" которую потом можно было бы использовать в формуле. По дефолту он бы показывал в окошке сегодняшную дату но ее можно было бы изменить на любую.
Как Вам такой вариант (во вложении, модуль книги)? Если вместо даты вводится что-то постороннее - окно будет появляться до тех пор, пока не будет введена дата.
[vba]
Код
Private Sub Workbook_Open()
Dim DateA
Start:
With ThisWorkbook.Worksheets("Данные") DateA = InputBox("Введите актуальную дату.", "Запрос.", Date) If Not IsDate(DateA) Then GoTo Start .Cells(1, 1).Value = DateA End With
End Sub
[/vba]
koyaanisqatsi, здравствуйте.
Как Вам такой вариант (во вложении, модуль книги)? Если вместо даты вводится что-то постороннее - окно будет появляться до тех пор, пока не будет введена дата.
[vba]
Код
Private Sub Workbook_Open()
Dim DateA
Start:
With ThisWorkbook.Worksheets("Данные") DateA = InputBox("Введите актуальную дату.", "Запрос.", Date) If Not IsDate(DateA) Then GoTo Start .Cells(1, 1).Value = DateA End With
koyaanisqatsi, здравствуйте. А можно и не в ячейку записывать, а например, задать имя myDate (немного переделала макрос Романа ) [vba]
Код
Private Sub Workbook_Open() ActiveWorkbook.Names.Add Name:="myDate", RefersToR1C1:=Format(Date, "dd.mm.yyyy") Dim DateA Do DateA = InputBox("Введите актуальную дату.", "Запрос.", Date) Loop While Not IsDate(DateA) ActiveWorkbook.Names("myDate").RefersToR1C1 = DateA End Sub
[/vba] тогда в формулах можно будет использовать это имя, например так
Код
=СЕГОДНЯ()-myDate
koyaanisqatsi, здравствуйте. А можно и не в ячейку записывать, а например, задать имя myDate (немного переделала макрос Романа ) [vba]
Код
Private Sub Workbook_Open() ActiveWorkbook.Names.Add Name:="myDate", RefersToR1C1:=Format(Date, "dd.mm.yyyy") Dim DateA Do DateA = InputBox("Введите актуальную дату.", "Запрос.", Date) Loop While Not IsDate(DateA) ActiveWorkbook.Names("myDate").RefersToR1C1 = DateA End Sub
[/vba] тогда в формулах можно будет использовать это имя, например так
Опа) Макрос который не виден в макросах. А как мне на него прописать какуюнибудь клавишу ? например F12 (сейчас получилось так что если я захочу поменять дату то надо заново открывать файл.) Либо можно чтобы вообще не пропадало это окошко если это можно сделать.
Кажется оба варианта Отличные ! Спасибо огромное.
Опа) Макрос который не виден в макросах. А как мне на него прописать какуюнибудь клавишу ? например F12 (сейчас получилось так что если я захочу поменять дату то надо заново открывать файл.) Либо можно чтобы вообще не пропадало это окошко если это можно сделать.koyaanisqatsi
Сообщение отредактировал koyaanisqatsi - Четверг, 26.03.2015, 23:12
koyaanisqatsi, можно код вынести в отдельный макрос: [vba]
Код
Sub Change_date() ActiveWorkbook.Names.Add Name:="myDate", RefersToR1C1:=Format(Date, "dd.mm.yyyy") Dim DateA Do DateA = InputBox("Введите актуальную дату.", "Запрос.", Date) Loop While Not IsDate(DateA) ActiveWorkbook.Names("myDate").RefersToR1C1 = DateA End Sub
[/vba] при открытии книги его просто вызвать: [vba]
Код
Private Sub Workbook_Open() Change_date End Sub
[/vba]
Но тогда макрос будет создавать это имя диапазона для активной книги.
koyaanisqatsi, можно код вынести в отдельный макрос: [vba]
Код
Sub Change_date() ActiveWorkbook.Names.Add Name:="myDate", RefersToR1C1:=Format(Date, "dd.mm.yyyy") Dim DateA Do DateA = InputBox("Введите актуальную дату.", "Запрос.", Date) Loop While Not IsDate(DateA) ActiveWorkbook.Names("myDate").RefersToR1C1 = DateA End Sub
[/vba] при открытии книги его просто вызвать: [vba]
Код
Private Sub Workbook_Open() Change_date End Sub
[/vba]
Но тогда макрос будет создавать это имя диапазона для активной книги.Manyasha