Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Запрет на редактирование данных предыдущего дня / 8 сообщений из 8, страница 1 из 1
14.06.2006, 06:51:55
    #33789055
Настенька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на редактирование данных предыдущего дня
Есть excel, там такие строки, как на картинке: вверху числа месяца.

Нужно сделать так, что если пользователь вводит данные не в колонку текущего дня, то надо это запретить. как правильно и на какое событие это сделать?
...
Рейтинг: 0 / 0
14.06.2006, 08:29:09
    #33789110
Ashton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на редактирование данных предыдущего дня
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Private Sub Worksheet_Change(ByVal Target As Range)
    If Cells( 1 , Target.Column) <> Day(Date) Then
        Application.EnableEvents = False
        MsgBox "Нельзя вводить значения в нетекущюю дату!"
        Target.Value = ""
        Application.EnableEvents = True
    End If
End Sub
...
Рейтинг: 0 / 0
14.06.2006, 08:36:22
    #33789123
Настенька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на редактирование данных предыдущего дня
хороший код, но есть одно но.
Target.Value = "" - не верно.
т.е. у меня там может быть значение, надо что если пользователь вводит не в тот день, то старое значение возвращалось, а не пустое присваивалось.
...
Рейтинг: 0 / 0
14.06.2006, 08:52:52
    #33789141
Logayn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на редактирование данных предыдущего дня
Настенькахороший код, но есть одно но.
Target.Value = "" - не верно.
т.е. у меня там может быть значение, надо что если пользователь вводит не в тот день, то старое значение возвращалось, а не пустое присваивалось.

В модуле этого листа:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Dim ActCell As Variant
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActCell = Target.Value
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    If Cells( 1 , Target.Column) <> Day(Date) Then
        Application.EnableEvents = False
        MsgBox "Нельзя вводить значения в нетекущюю дату!"
        Target.Value = ActCell
        Application.EnableEvents = True
    End If
End Sub
...
Рейтинг: 0 / 0
14.06.2006, 09:08:34
    #33789170
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на редактирование данных предыдущего дня
Код: plaintext
1.
2.
3.
4.
5.
6.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim rng As Range
    Set rng = Rows( 1 ).Find(What:=Val(Day(Date)), LookIn:=xlValues, LookAt:= _
        xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True)
    If Not rng Is Nothing Then Cells(Target.Row, rng.Column).Select Else Cells( 1 ,  1 ).Select
    Set rng = Nothing
End Sub
и даже скопировать нельзя будет
...
Рейтинг: 0 / 0
14.06.2006, 09:50:15
    #33789261
Настенька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на редактирование данных предыдущего дня
Спасибо всем, очень помогли мне.
...
Рейтинг: 0 / 0
14.06.2006, 09:58:59
    #33789297
Дмит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на редактирование данных предыдущего дня
Logayn

Просто заменить Target.Value = "" на Application.Undo
...
Рейтинг: 0 / 0
14.06.2006, 18:04:26
    #33791171
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на редактирование данных предыдущего дня
А еще лучше будет ставить защиту на весь лист, а в событии Workbook_Open снимать защиту с ячеек соотвествующих сегодняшнему дню.
Что-то вроде:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
sub Workbook_Open()
   dim ws as worksheet
   set ws = Worksheets("Calendar")
   ws.Unprotect
   ws.UsedRange.Locked = true
   ws.UsedRange.Columns(day(date())+ 1 ).Locked = false
   ws.Protect
end sub
И не забудьте про напильник :)
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Запрет на редактирование данных предыдущего дня / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]