Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


13092 / 13646 ツリー ←次へ | 前へ→

【6995】フォーカスを固定するには 光速エスパー 03/8/19(火) 16:45 質問
【7008】Re:フォーカスを固定するには INA 03/8/20(水) 8:56 回答
【7018】Re:フォーカスを固定するには 光速エスパー 03/8/20(水) 14:30 質問
【7020】Re:フォーカスを固定するには INA 03/8/20(水) 14:36 回答
【7070】Re:フォーカスを固定するには Jaka 03/8/21(木) 17:25 回答

【6995】フォーカスを固定するには
質問  光速エスパー  - 03/8/19(火) 16:45 -

引用なし
パスワード
   カードリーダから読み取るシステムを設計しています。

そこで、フォーム上の特定のテキストボックスで常に入力待ちの状態に
するために、マウスで他のオブジェクトをクリックした後でも、
常にその特定のテキストボックスにフォーカスが得られているように
したいのですが、その方法をお教えください。

よろしくお願いします。

【7008】Re:フォーカスを固定するには
回答  INA  - 03/8/20(水) 8:56 -

引用なし
パスワード
   プロパティのTabStopをFalseにしてはいかがでしょうか?

【7018】Re:フォーカスを固定するには
質問  光速エスパー  - 03/8/20(水) 14:30 -

引用なし
パスワード
   ▼INA さん:
>プロパティのTabStopをFalseにしてはいかがでしょうか?

ご回答ありがとうございます。
例えば、フォーム上にテキストボックスを3つ配置して
その内、2つのTabStopをFalseにしてみました。

確かに、Tabキーでは、フォーカスの移動はTabStopがFalseの
ものだけに限定されますが、マウスを使えば、どれにも
フォーカスが得られてしまいます。

VBAで書くとしたら、対象のフォームがアクティブの間、
常に一定時間間隔(例えば、0.5秒)で、フォーカスを
指定のテキストボックスに移動させるコードを試したいと
思っています。
事例かヒントを与えていただけないでしょうか。

【7020】Re:フォーカスを固定するには
回答  INA  - 03/8/20(水) 14:36 -

引用なし
パスワード
   それでは、フォーカスのいらないコントロール(TextBox?)の
Enabled プロパティを False にしてはどうでしょうか?

【7070】Re:フォーカスを固定するには
回答  Jaka  - 03/8/21(木) 17:25 -

引用なし
パスワード
   こんにちは。
0.5秒ってのはSleep(API)使うと思うんですけど、よく解らなかったんで1秒間隔にしました。こんな感じでどうでしょうか?

Private Sub UserForm_Activate()
  DoEvents
  SendKeys "111"
  DoEvents
  TextBox2.SetFocus
  Application.Wait Now + TimeValue("00:00:01")
  SendKeys "111"
  DoEvents
  TextBox3.SetFocus
  Application.Wait Now + TimeValue("00:00:01")
  SendKeys "111"
  DoEvents
  TextBox4.SetFocus
  Application.Wait Now + TimeValue("00:00:01")
  SendKeys "111"
  DoEvents
End Sub

Private Sub UserForm_Initialize()
  TextBox1.SetFocus
End Sub

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  If TextBox1.Value = "" Then
    Cancel = True
  Else
    Cancel = False
  End If
End Sub

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  If TextBox2.Value = "" Then
    Cancel = True
  Else
    Cancel = False
  End If
End Sub

Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  If TextBox3.Value = "" Then
    Cancel = True
  Else
    Cancel = False
  End If
End Sub

Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  If TextBox4.Value = "" Then
    Cancel = True
  Else
    Cancel = False
  End If
End Sub

13092 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free