-PR-
締切り
済み

Access97のVBAでキーボードを制御する方法は?

  • 暇なときにでも
  • 質問No.3632
  • 閲覧数352
  • ありがとう数8
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 14% (1/7)

フォームなどの入力において、[Insert]キーが押されて、文字入力が上書きになっているかどうかを検出したい。また、VBAで上書きモードに設定したい。
キーボードの[Insert]キーを押すと、ステータスバーの右のほうに「OVR」と表示され、テキストボックスなどへの文字入力が、文字単位で上書きになります。この制御をVBAで行いたいのです。
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全4件)

  • 回答No.1
レベル13

ベストアンサー率 46% (643/1383)

A案:定型入力を使用する。"C"か"&"あたりををフィールド長だけ並べればいいで しょう。 B案:APIを使う。GetKeyStateでキーボードの状態を取得、SetKeyStateで設定。 おまけ:Sendkeys "{INSERT}"を試みましたが、どうもうまくいかないようです。 5分ほど実験しただけ ...続きを読む
A案:定型入力を使用する。"C"か"&"あたりををフィールド長だけ並べればいいで
しょう。

B案:APIを使う。GetKeyStateでキーボードの状態を取得、SetKeyStateで設定。

おまけ:Sendkeys "{INSERT}"を試みましたが、どうもうまくいかないようです。
5分ほど実験しただけなので、何とも言えないですが。

  • 回答No.2
レベル13

ベストアンサー率 46% (643/1383)

訂正です。キーの設定はSetKeyboardStateでした。
訂正です。キーの設定はSetKeyboardStateでした。
  • 回答No.3
レベル13

ベストアンサー率 46% (643/1383)

この問題について、しばらく時間をかけていろいろ実験してみたんですが、私の技術 の範囲では、満足の行く結果が得られませんでした。少なくとも、Accessのプロパ ティでは現在の上書きモードの状況を取得することはできないようです。(あるいは、 私の探し方が下手糞なだけかも… 求む、情報。) GetKeyState APIや、キーボード 関連のイベントによって、Insertキーが押されたかどうかの情報は ...続きを読む
この問題について、しばらく時間をかけていろいろ実験してみたんですが、私の技術
の範囲では、満足の行く結果が得られませんでした。少なくとも、Accessのプロパ
ティでは現在の上書きモードの状況を取得することはできないようです。(あるいは、
私の探し方が下手糞なだけかも… 求む、情報。) GetKeyState APIや、キーボード
関連のイベントによって、Insertキーが押されたかどうかの情報は取得できても、
現在のAccessの状態までは分かりません。(Accessの上書きモードは、キーボード
の状態とは無関係なようです。)

設定の方は、Sendkeys "{INSERT}" で、若干の問題付きで、可能なようです。
(Clickイベント中に記述するには、DoEventsをはさまなくてはいけないなど、多少
の問題はあるようです。)

もしよろしければ、現在お悩みの問題を補足のところに具体的にお書きください。
もしかしたら、有効な代替案を提案できるかもしれません。
補足コメント
Toshi-T

お礼率 14% (1/7)

ご回答ありがとうございます。
Windows APIの利用の仕方について、研究し始めたところです。
ホスト系の端末画面と同じ操作感にしたいために、常に文字入力を上書きにしたいのです。SendKeyでは、最初の1回に限り成功します。2回目(あるいは別のフォームを開くとき)は不要なので、今の状態に応じた動作をさせる必要があります。
パンチャーの戸惑いを少しでも軽減するために、努力しています。
投稿日時 - 0000-00-00 00:00:00
  • 回答No.4
レベル13

ベストアンサー率 46% (643/1383)

常に上書きにするというのであれば、定型入力プロパティで何とか代用できると思 います。 テキストボックスの定型入力/InputMaskプロパティを CCCCCCCC;;" " (Cをフィールドの最大長だけ並べる)と設定し、 Private Sub テキスト0_GotFocus() Me.テキスト0.SelStart = 0 Me.テキスト0.SelLe ...続きを読む
常に上書きにするというのであれば、定型入力プロパティで何とか代用できると思
います。

テキストボックスの定型入力/InputMaskプロパティを
CCCCCCCC;;" " (Cをフィールドの最大長だけ並べる)と設定し、

Private Sub テキスト0_GotFocus()
Me.テキスト0.SelStart = 0
Me.テキスト0.SelLength = 1
End Sub
Private Sub テキスト0_AfterUpdate()
If IsNull(Me.テキスト0) = False Then
Me.テキスト0 = RTrim$(Me.テキスト0)
End If
End Sub

ってなコードを書いてやれば、ある程度違和感無く使えるんじゃないでしょうか。
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ