Я пытаюсь получить текстовое поле в пользовательской форме, чтобы принимать только числовой ввод. Либо пользовательский ввод, либо вставка ввода. Если пользователь вставляет значение вроде «9781292098814 paperback» или «9781292098814 онлайн», мне нужно, чтобы этот текст был удален непосредственно перед вводом Excel.
Я пробую 2 кода ниже, но один работает только тогда, когда пользователь вводит данные, используя клавиатуры. Еще один, текст будет удален только после ввода введите Excel.
''remove text for ISBN column
tmpStr = ISBNTextBox.Value
For i = 1 To Len(tmpStr)
Select Case Mid$(tmpStr, i, 1) '//examine current char
Case "0" To "9" '//permitted chars
'//ok
Case Else
Mid$(tmpStr, i, 1) = "!"
End Select
Next i
tmpStr = Replace$(tmpStr, "!", "") '//strip invalids & return
Еще один
Private Sub ISBNTextBox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case vbKey0 To vbKey9, vbKeyBack, vbKeyClear, vbKeyDelete, _
vbKeyLeft, vbKeyRight, vbKeyUp, vbKeyDown, vbKeyTab
If KeyAscii = 46 Then If InStr(1, ISBNTextBox.Text, ".") Then KeyAscii = 0
Case Else
KeyAscii = 0
Beep
End Select
End Sub