[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『数字以外の文字列をペースト不可とする』(エクセル勉強中)
(1)と(2)で行っている事
易しく説明して頂けませんか
実行時エラーが出るので間違っている可能性です
Private Sub TextBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim Stri As String '変数の型を設定 With TextBox3 Stri = .Text '?入力値を変数Striに設定 If KeyCode = vbKeyV And Shift = 2 Then '?ctrl+Vの値をKeyCodeに設定 .Paste'? KeyCode = 0'?…(1) If IsNumeric(.Text) = False Then'入力値が数字でない ならば .Text = Stri'?…(2) MsgBox "数字以外のデータの貼り付けを禁じる" Else .Text = StrConv(.Text, vbNarrow)'全角数字を半角に変換 End If End With End Sub
< 使用 Excel:Excel2007、使用 OS:Windows7 >
Private Sub TextBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim Stri As String 'String型の変数を宣言 With TextBox3 Stri = .Text 'テキストボックスの入力値を変数Striに格納 If KeyCode = vbKeyV And Shift = 2 Then 'ctrl+V キーが押されていたら .Paste 'クリップボードから貼り付け KeyCode = 0 'V キーが押されなかったことに(貼り付けを無効に) If IsNumeric(.Text) = False Then '入力値が数字でない ならば .Text = Stri 'Striに格納していた値(貼り付け前の値)に戻す MsgBox "数字以外のデータの貼り付けを禁じる" Else .Text = StrConv(.Text, vbNarrow) '全角数字を半角に変換 End If End If End With End Sub
(hatena) 2018/05/18(金) 21:30
KeyCode = 0 に関しては、hatenaさんのご回答の通り .Pasteによる貼り付けと[Ctrl+V]による貼り付けの重複を回避する為 あるいは貼り付け後に「v」と入力されてしまうのを回避する為の対策 ではなかろうかと思います。
>実行時エラーが出る ↑こっちもちょっと気になりますね。 当方では「コンパイルエラー」と出ました。End Ifが1つ足りないから。
(白茶) 2018/05/18(金) 21:49
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.