Действия KeyPress в ячейке excel

Здравствуйте Уважаемые программисты! Подскажите пожалуйста, как прописать аналогичный код:Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Dim txt As String txt = Me.TextBox1 If InStr(1, txt, ",") > 0 And Len(txt) - InStr(1, txt, ",") = 3 Then KeyAscii = 0 Select Case KeyAscii Case 8: Case 44: KeyAscii = IIf(InStr(1, txt, ",") > 0, 0, 44) Case 46: KeyAscii = IIf(InStr(1, txt, ",") > 0, 0, 44) Case 48 To 57 Case Else: KeyAscii = 0 End Select End Subно не для элемента формы "TextBox" (как в коде выше), а для ячейки Excel, т.е. чтобы аналогичный код работал при попытке ввода в ячейку excel без формы? Заранее спасибо.
5 ответов

никак. у ячеек листа нет такого функционала. но есть "проверка данных". может быть, это нужно?


Нужно писать код только для этой процедуры
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

End Sub


никак. у ячеек листа нет такого функционала. но есть "проверка данных". может быть, это нужно?
Проверку данных для ячейки сделала (действительное между 0 и 100000, разделитель у меня запятая по умолчанию), но при вводе в ячейку, например, "6.7" число преобразуется в дату, что не должно быть. Подскажите пожалуйста как запретить преобразование числа в дату?Спасибо.


Поелику "например, "6.7" " у вас ни в коем разе не число, поставьте формат ячеек "Текстовый". Или вводите число - 6,7.


Поелику "например, "6.7" " у вас ни в коем разе не число, поставьте формат ячеек "Текстовый". Или вводите число - 6,7.
Если формат ячеек Текстовый, то не будет работать проверка данных как число. А на счет запятой все верно, но пользователь может ввести случайно точку. Подскажите пожалуйста, может можно сделать чтобы при преобразовании числа в дату (т.е. при вводе точки) в данной ячейке срабатывала какая-нибудь "ошибка"? Заранее спасибо.