Игнорирование клавиши Delete

Программирование на Visual Basic for Applications
fishh
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 21.10.2005 (Пт) 9:50

Игнорирование клавиши Delete

Сообщение fishh » 21.10.2005 (Пт) 10:16

Help me!!!
Мне нужно, чтобы значение в текущей ячейки нельзя было удалить. Т.е., нажимая на клавиши Delete or Backspace никаких действий не происходило.

Заранее, большое спасибо.

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 21.10.2005 (Пт) 10:26

На всякий случай: что такое защита ячеек, знаешь? Если нет, см. хелп по Экселю.
Быть... или не быть. Вот. В чём вопрос?

fishh
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 21.10.2005 (Пт) 9:50

Сообщение fishh » 21.10.2005 (Пт) 10:50

Чтобы защитить ячейку, нужно защитить лист. А этого мне совсем не нужно. Может быть есть какие-нибудь другие варианты. Например, отслеживать нажатие клавиши на ячеку. Или еще что-нибудь.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 21.10.2005 (Пт) 10:51

Именно это тебе и нужно, защитить лист.
Lasciate ogni speranza, voi ch'entrate.

fishh
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 21.10.2005 (Пт) 9:50

Сообщение fishh » 21.10.2005 (Пт) 10:58

Мне нужно, чтобы с клавиатуры редактирование ячеек (столбца) не происходило. Значения у меня вводятся в данный столбец через TextBox. Другие же ячейки не защищены и не надо.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 21.10.2005 (Пт) 12:15

Выдели лист.
Сними защиту с ячеек.
Выдели столбец.
Поставь защиту ячеек.
Защити лист.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

fishh
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 21.10.2005 (Пт) 9:50

Сообщение fishh » 24.10.2005 (Пн) 5:41

Я попробовала сделать так как сказал GSerg. Но когда я хочу изменить содержание защищаемой ячейки через TextBox, происходит ошибка.

fishh
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 21.10.2005 (Пт) 9:50

Сообщение fishh » 24.10.2005 (Пн) 7:10

Еще я попробовала сделать так:
меня как бы это устраивает, то что мне надо выполняется (не удаляется содержимое ячейки при нажатии на кнопки Del и Backspace), но первое событие зацикливается, т.к. постоянно происходит изменение ячейки. Как это обойти? или может, есть какие нибудь другие варианты?

Private Sub Worksheet_Change(ByVal Target As Range)
Cells(num1, numA).Value = nnn
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
numA = Target.Column
num1 = Target.Row
nnn = Cells(num1, numA).Value
End Sub

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 24.10.2005 (Пн) 13:14

fishh писал(а):Я попробовала сделать так как сказал GSerg. Но когда я хочу изменить содержание защищаемой ячейки через TextBox, происходит ошибка.

Используй метод Protect, чтобы защитить лист от пользователя, но не от макроса.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

fishh
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 21.10.2005 (Пт) 9:50

Сообщение fishh » 25.10.2005 (Вт) 6:48

Я сделала так:
ActiveSheet.Protect UserInterfaceOnly:=True
Все получилось. Большое спасибо всем кто помог мне, а особенно GSerg.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 94

    TopList