Страница: 1 |
Страница: 1 |
Вопрос: Как поступить при сообщении об ошибке
Добавлено: 26.02.10 13:38
Автор вопроса: oleg
Добрый день. Данный макрос блокирует в таблице данные, по принципу сравнения столбцов с текущей датой. У меня возникла проблема: нужно установить "перекресток" если (if) в таблице нет аналога текущей даты, то закрыть книгу и выдыть MsgBox, иначе (else) дальше продолжается процедура с блокировками ячеек. Вроде задача из разряда детсадика, а что-то затупил на полнуюю.
Спасибо за помощь.
Sub BlockEarlierDates(theSheetName As String, theRow As String)
Dim todayColumn As Integer 'номер колонки с сегодняшней датой
Dim theSheet As Worksheet 'рабочий лист
'запоминаем рабочий лист
Set theSheet = ThisWorkbook.Worksheets(theSheetName)
'вычисляем колонку с сегодняшней датой, MATCH(TODAY()-1 это на день меньше текущей даты, если плюс больше
todayColumn = CInt(Application.Evaluate("MATCH(TODAY()-1, " & theSheet.Name & "!" & theRow & ", 0)"))
Debug.Print todayColumn
'разблокируем лист
theSheet.Unprotect
'блокируем предыдущие даты
Range(theSheet.Cells(1, 1), theSheet.Cells(ROWS_AMOUNT, todayColumn - 1)).Locked = True
'разблокируем сегодняшнюю и последующие даты
Range(theSheet.Cells(1, todayColumn), theSheet.Cells(ROWS_AMOUNT, COLUMNS_AMOUNT)).Locked = False
'блокируем лист
theSheet.Protect
End Sub
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа:
Jasmin
Вопросов: 23
Ответов: 417
Профиль | | #1
Добавлено: 26.02.10 14:38
Вот что-то такое наверно ?
Номер ответа: 2
Автор ответа:
oleg
Вопросов: 12
Ответов: 23
Профиль | | #2
Добавлено: 26.02.10 14:59
Спасибо большое, одну вещь поправил: todayColumn=-1 после того, как запомнили лист, тогда все работает.
Еще раз спасибо, а то в такие дебри лез.
Номер ответа: 3
Автор ответа:
Jasmin
Вопросов: 23
Ответов: 417
Профиль | | #3
Добавлено: 26.02.10 15:03
Пожалуйста.
Истина где-то рядом. Бывает...Запрограммировался
Номер ответа: 4
Автор ответа:
oleg
Вопросов: 12
Ответов: 23
Профиль | | #4
Добавлено: 26.02.10 15:14
Чет я поторопился, проверял на отключенных макросах. Теперь при любых датах вылетает "дата не найдена". В чем засада? Еще раз help.
Номер ответа: 5
Автор ответа:
Jasmin
Вопросов: 23
Ответов: 417
Профиль | | #5
Добавлено: 27.02.10 08:28
А что у тебя выдает
Там принцип был, что сначала заведомо не найдено. А после MATCH что-то может быть найдено.Похоже поторопилась немного. Попробуй вот так поправить: