0

こんにちは私の主な目的は、ユーザーがVBAのマクロを使用してExcelシートを開いた後、ユーザーによる特殊文字の入力を無効にすることです。

私はそれを行う方法を試しました。1つのキャラクターに対して1つのメソッドを見つけました。

Sub Disable_Keys()
    Dim KeysArray As Variant
    Dim Key As Variant

    KeysArray = Array("@", "!", "~")

    'Disable the StartKeyCombination key(s) with every key in the KeysArray
    For Each Key In KeysArray
        Application.OnKey Key, "myMsg"
    Next Key
End Sub

Sub myMsg()
    MsgBox "All keys are valid characters"
End Sub

これには問題があります。私はその配列の2つのキーのみを無効にしています。「〜」のように3つ追加すると。そのキーでは機能しません。

他に解決策があれば、私を助けてください。

4

1 に答える 1

1

コードは記述どおりに機能します。

問題は、OnKeyメソッド"~"がEnterキーとして解釈されることです。代わりに、チルダを実際に使用するように"{~}"します。OnKeyメソッドに関するドキュメントは次のとおりです。

明示的にするには、次を使用しますKeysArray = Array("@", "!", "{~}")

編集:コメントのために、私はあなたがすべきことを追加したいだけです。

リストしたコードをイベントのThisWorkBookモジュールに移動することをお勧めします。Workbook_Open次のようなメソッドも含める必要があります。

Private Sub Workbook_BeforeClose(Cancel As Boolean)
        Dim KeysArray As Variant
        Dim Key As Variant

        KeysArray = Array("@", "!", "{~}")

        'Disable the OnKey settings with every key in the KeysArray
        For Each Key In KeysArray
            Application.OnKey Key, ""
        Next Key
End Sub

このメソッドを含めない場合、ワークブックを閉じた後でも、アプリケーションを閉じるまで、キー入力でサブKeysArrayを実行しようとします。MyMsg

于 2012-09-06T05:31:52.670 に答える