Здравствуйте. В общем, сразу оговорюсь, что в вопросах работы с VBA я полнейший гуманитарий и ни разу не увлекался этим, но обстоятельства подстегнули. Суть такова: Знакомые решили вести хоть какой-то мало-мальский учет запасов через Excel.
Я подумал и решил, что можно соорудить следующее: Создать календарь в Excel с заранее прописанными датами. Пользователь кликает на сегодняшнюю дату и у него открывается другая книга, в ней создается новый лист, скопированный из последнего.
В общем, с помощью гугла, да и вашего форума я-таки думаю, что вполне могу осилить все, кроме основной задачи: Мне нужно создать условие. Согласно ему, если пользователь кликает на сегодняшнюю дату в календаре, у него открывается, повторюсь, в другой книге лист, скопированный из последнего. Если же он кликает на прошедший день (например, позавчера), то у него открывается в той же книге лист, который и был заполнен позавчера.
И я вообще не могу никак понять, каким бы мне образом создать условие по датам.
Повторюсь, что сам я весьма условный пользователь VBA, так что, если осмелитесь помочь, разжуйте хоть немного!
Прикреплю пробный вариант календарика. Спасибо большое.
Здравствуйте. В общем, сразу оговорюсь, что в вопросах работы с VBA я полнейший гуманитарий и ни разу не увлекался этим, но обстоятельства подстегнули. Суть такова: Знакомые решили вести хоть какой-то мало-мальский учет запасов через Excel.
Я подумал и решил, что можно соорудить следующее: Создать календарь в Excel с заранее прописанными датами. Пользователь кликает на сегодняшнюю дату и у него открывается другая книга, в ней создается новый лист, скопированный из последнего.
В общем, с помощью гугла, да и вашего форума я-таки думаю, что вполне могу осилить все, кроме основной задачи: Мне нужно создать условие. Согласно ему, если пользователь кликает на сегодняшнюю дату в календаре, у него открывается, повторюсь, в другой книге лист, скопированный из последнего. Если же он кликает на прошедший день (например, позавчера), то у него открывается в той же книге лист, который и был заполнен позавчера.
И я вообще не могу никак понять, каким бы мне образом создать условие по датам.
Повторюсь, что сам я весьма условный пользователь VBA, так что, если осмелитесь помочь, разжуйте хоть немного!
Прикреплю пробный вариант календарика. Спасибо большое.Artem_M
Здравствуйте. Да я думаю, что он неважен. Просто, допустим, пусть это будет Лист1 в новой книге (к которой прописан путь), в котором что-нибудь есть (к примеру, в а1 цифра 1 стоит). Все что я смог сделать - добиться открытия книги с созданием просто нового листа, независимо от выбранной мною даты, либо с созданием копии через Sheets.Copy, но как это привязать к сегодня/не сегодня все равно ума не хватает.
У меня у самого этот "последний лист", который вы хотите увидеть, не сделан, т.к. не могу продвинуться в макросах.
Здравствуйте. Да я думаю, что он неважен. Просто, допустим, пусть это будет Лист1 в новой книге (к которой прописан путь), в котором что-нибудь есть (к примеру, в а1 цифра 1 стоит). Все что я смог сделать - добиться открытия книги с созданием просто нового листа, независимо от выбранной мною даты, либо с созданием копии через Sheets.Copy, но как это привязать к сегодня/не сегодня все равно ума не хватает.
У меня у самого этот "последний лист", который вы хотите увидеть, не сделан, т.к. не могу продвинуться в макросах.Artem_M
In Work We Trust
Сообщение отредактировал Artem_M - Вторник, 31.03.2015, 09:43
Artem_M, здравствуйте. Смотрите файл, так подойдет?
[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect(Target, Range("Календарь")) Is Nothing Then 'Если дата в активной ячейке = сегодняшней If CDate(ActiveCell.Value) = Date Then 'копируем последний лист в новую книгу Sheets(Sheets.Count).Copy 'Если дата в активной ячейке < сегодняшней ElseIf CDate(ActiveCell.Value) < Date Then On Error Resume Next 'открываем лист с именем <выбранная дата> Sheets(Format(ActiveCell.Value, "dd.mm.yyyy")).Select If Err <> 0 Then MsgBox "Такого листа нет": SendKeys "{ESC}" On Error GoTo 0 End If End If End Sub
[/vba]
Кстати, чтобы не разрисовывать на каждый месяц календарь, можно скачать готовый, например от сюда:http://www.excelworld.ru/forum/3-612-1. Посмотрите, может понравится)
Artem_M, здравствуйте. Смотрите файл, так подойдет?
[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect(Target, Range("Календарь")) Is Nothing Then 'Если дата в активной ячейке = сегодняшней If CDate(ActiveCell.Value) = Date Then 'копируем последний лист в новую книгу Sheets(Sheets.Count).Copy 'Если дата в активной ячейке < сегодняшней ElseIf CDate(ActiveCell.Value) < Date Then On Error Resume Next 'открываем лист с именем <выбранная дата> Sheets(Format(ActiveCell.Value, "dd.mm.yyyy")).Select If Err <> 0 Then MsgBox "Такого листа нет": SendKeys "{ESC}" On Error GoTo 0 End If End If End Sub