[[20221020163453]] 『テキストボックス 手入力禁止 VBA』(VBA) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『テキストボックス 手入力禁止 VBA』(VBA)

こんにちは。

テキストボックスに入力する際、バーコードリーダーの入力はokとして、
キーボードによる手入力は禁止にするにはどういうコードを書いたらいいですか?

< 使用 Excel:Excel2013、使用 OS:Windows7 >


入力不可の、
テキストボックスに、
したら、
いいんじゃないの、
かな
(NOSE) 2022/10/20(木) 16:49:15

>バーコードリーダーの入力はokとして、キーボードによる手入力は禁止
>どういうコードを書いたら
「バーコードリーダーの入力」とやらをどう処理するのかは存じませんが、マクロで制御するならユーザー操作のみ対象にしてシート保護すればよいのではありませんか?
 【参考】
https://tonari-it.com/excel-vba-protect-userinterfaceonly/

(もこな2) 2022/10/20(木) 16:53:37


Enabledプロパティをfalse
とか?
(アニメ) 2022/10/20(木) 16:58:58

 バーコードリーダーがキーボードデバイスとして認識されてるなら区別できないのでは
(´・ω・`) 2022/10/20(木) 17:05:45

入力不可 Enabledをfalseにらしたら全て入力不可になりました。
やはり指摘の通りバーコードリーダーがキーボードデバイスとして認識
されているので厳しいみたいです。
(VBA) 2022/10/20(木) 17:14:09

 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


白茶さん。
ありがとうございます。
明日会社で試してみます。
また、明日ご報告します。
(VBA) 2022/10/20(木) 22:19:17

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.