[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『テキストボックス 手入力禁止 VBA』(VBA)
こんにちは。
テキストボックスに入力する際、バーコードリーダーの入力はokとして、
キーボードによる手入力は禁止にするにはどういうコードを書いたらいいですか?
< 使用 Excel:Excel2013、使用 OS:Windows7 >
【参考】 https://tonari-it.com/excel-vba-protect-userinterfaceonly/
(もこな2) 2022/10/20(木) 16:53:37
バーコードリーダーがキーボードデバイスとして認識されてるなら区別できないのでは (´・ω・`) 2022/10/20(木) 17:05:45
KeyDownとかKeyPressイベントの中で リーダーからのプリフィックスとサフィックスを検知して Lockedを切り替えるとか...?
VBAなどでアプリケーションソフトを設計する場合のソースコード(サンプル)はありますか
https://www.a-poc.co.jp/howto/howto_faq14.html
(白茶) 2022/10/20(木) 17:18:50
最早書くまでもないかも知れませんけど一応書いておきます ^^; ↓KeyPressイベントでKeyAscii判定を使用するなら.. の例
'[UserForm1]モジュール Option Explicit Private Const CHAR_PREFIX = "*" Private Const CHAR_SUFFIX = "*" Private WithEvents Text1 As MSForms.TextBox
Private Property Get Text1Locked() As Boolean Text1Locked = Text1.Locked End Property Private Property Let Text1Locked(newBool As Boolean) If newBool = Text1.Locked Then Exit Property Text1.Locked = newBool Text1.BackColor = IIf(newBool, &H8000000F, &H80000005) End Property
Private Sub Text1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If KeyAscii.Value = Asc(CHAR_PREFIX) And Text1Locked Then Text1Locked = False KeyAscii.Value = 0 ElseIf KeyAscii.Value = Asc(CHAR_SUFFIX) And Not Text1Locked Then Text1Locked = True KeyAscii.Value = 0 End If End Sub
Private Sub UserForm_Initialize() Set Text1 = Me.Controls.Add("Forms.TextBox.1", "Text1") Text1.Top = 36! Text1.Left = 36! Text1.Width = 160! Text1Locked = True End Sub
KeyDownイベントの方がKeyCodeとShiftの組み合わせが出来るのでやり易いかもデスね
(白茶) 2022/10/20(木) 21:52:47
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.