プロが教える店舗&オフィスのセキュリティ対策術

テキストボックスのKeyPressイベントで

テキストボックスに大文字を入れたいのですが、

入力の時に、shift+CapsLock(英数)ってすると、大文字がいれれるとおもうのですが、それを初期設定で制限することはできないのでしょうか?

 

A 回答 (3件)

お疲れ様です。



どのようなことを行いたいのかはよくわかりませんが
APIでCaps Lockを強制的にOnにすることは出来ると思います。

以下の例は、フォームが起動する時に現在のCaps Lockの
値を見てOff状態なら強制的にOnにしています。

これに似たものを GotFocus イベントに入れると初期設定
のように見えるのではないでしょうか?


Option Explicit

'// API
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal BScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Private Declare Function GetKeyboardState Lib "user32" (pbKeyState As Byte) As Long

Private Const VK_CAPITAL = &H14
Private Const KEYEVENTF_EXTENDEDKEY = &H1
Private Const KEYEVENTF_KEYUP = &H2

Private Sub Form_Load()

  Dim keys(0 To 255) As Byte

  '// Get KeyboardState
  GetKeyboardState keys(0)

  '// Caps Lock の状態を判断
  If Not CBool(keys(VK_CAPITAL)) Then

    '// Caps Lock が点灯していない
    '// Caps Key を押したことにする
    keybd_event VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0

    '// Caps Key を離したことにする
    keybd_event VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0

  Else

    '// Caps Lock が点灯している
    '// 何もしない

  End If

End Sub

間違っていたらごめんなさい。
    • good
    • 1

テキストボックスに大文字しか受け付けないような属性にしてしまう方法もあります。



これで行うと、コピペで入力された半角小文字英数も大文字に変更をOS側で変換を行ってくれます。

詳細は参考URLを見てください。

参考URL:http://www.vbvbvb.com/jp/gtips/0751/gSetWindowLo …
    • good
    • 0

テキストボックスに英小文字または英小文字混じりのストリングを入力しても、大文字にしてしまうのは下記で出来ました。


これを使えないでしょうか。ついでにエクセルでの関数は
A1のセルに小文字があるとして、B1のセルに大文字で統一
するのは「=UPPER(”A1”)」ですね。
-----------------------
Private Sub Form_Click()
' Form1.Print UCase(Text1.Text) ’テストのためやってみたもの
Text1.Text = UCase(Text1.Text)
End Sub
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています