none
ACCESSのVBでInputBoxへ入力するIMEを強制的に半角英数にするには RRS feed

  • 質問

  • 内容:
    ACCESS2016で、InputBoxでパスワードを入力する仕組みにしてますが、どうしてもIMEが日本語になったりしてしまいます。

    強制的に半角英数にする方法があれば教えてください。

    2019年8月5日 6:21

回答

  • InputBox 相当の機能を Form で自作されてはいかがでしょうか?

    そうすればテキストボックスの IME 入力モード/IMEMode プロパティを指定することが出来ます。

    上記では、Private Sub MyInputBox() というプロシージャーを用意していますが、標準モジュールに下記のようなプロシージャーを用意すれば、「InputBox を呼び出していた既存のコード」を書き換えることなく呼び出せるでしょう。

    '==  標準モジュール ==
    Public Function InputBox( _
        Prompt As Variant, _
        Optional Title As Variant, _
        Optional Default As Variant, _
        Optional XPos As Variant, _
        Optional YPos As Variant, _
        Optional HelpFile As Variant, _
        Optional Context As Variant) As String
    

    ※同名 Function で上書き中に、本物の InputBox を呼びたい場合は、VBA.InputBox と記述すれば OK

    • 回答としてマーク ojizou12 2019年8月6日 2:41
    2019年8月5日 7:55

すべての返信

  • InputBox 相当の機能を Form で自作されてはいかがでしょうか?

    そうすればテキストボックスの IME 入力モード/IMEMode プロパティを指定することが出来ます。

    上記では、Private Sub MyInputBox() というプロシージャーを用意していますが、標準モジュールに下記のようなプロシージャーを用意すれば、「InputBox を呼び出していた既存のコード」を書き換えることなく呼び出せるでしょう。

    '==  標準モジュール ==
    Public Function InputBox( _
        Prompt As Variant, _
        Optional Title As Variant, _
        Optional Default As Variant, _
        Optional XPos As Variant, _
        Optional YPos As Variant, _
        Optional HelpFile As Variant, _
        Optional Context As Variant) As String
    

    ※同名 Function で上書き中に、本物の InputBox を呼びたい場合は、VBA.InputBox と記述すれば OK

    • 回答としてマーク ojizou12 2019年8月6日 2:41
    2019年8月5日 7:55
  • 返信ありがとうございます。
    フォームを作成してのPSW入力方法もありますが、
    ボリュームがあるDBなので容量を少しでも軽減させる意味もありました。
    検討してみます。ありがとうこざいました。
    2019年8月6日 2:41
  • フォーム上のコマンドボタンから呼び出すのであれば、
    コマンドボタンの背後に隠れるようにテキストボックスを配置しておいて、
    そのテキストボックスの「IME 入力モード」プロパティを「半角英数」にしておいて、
    InbutBoxを呼び出す前にそのテキストボックスにSetFocusすればいいでしょう。

    ただ、私もフォームを作成してそれを呼び出す方法を推奨します。その方がパスワードに * でマスクをかけたりなどの設定ができます。フォームを1個作成するぐらいでそんなに容量は増えません。


    ID, パスワードが一致したらフォームを開く - hatena chips

    入力ダイアログフォームの設計 - hatena chips

    2019年8月6日 10:28