1377150462 VBAの質問です。直前のフォーカスを覚えておく方法は?

図のような画面で、たとえばマウスで英字マス(たとえばB)を選択し、
次にマウスで下の数字ボタン(たとえば7)を押すと、Bに7が入るようにしたいです。
ところがマウスでボタンを押した瞬間に、ボタンにフォーカスが移り、
英字マスへのフォーカスが外れてしまうので、たとえばSendkey命令で、7を押したことにする方法が使えません。
この機能を実現するためにはどのようにすれば良いか、教えていただけないでしょうか。

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2013/08/22 17:30:39
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:taknt No.1

回答回数13539ベストアンサー獲得回数1198

ポイント200pt

それぞれに Enterというイベントがあるはずなので
そのイベントに入ったら グローバル変数に そのボタンに入ったという 記憶を持たせたらいいでしょう。

id:lionfan2

id:taknt様、ありがとうございます。
今から会議なのですぐに試せないのが残念ですが、帰宅したらすぐ試してみます!!

2013/08/22 15:14:01
id:lionfan2

id:taknt様、ありがとうございました。無事解決しました。助かりました。
いちおう現物とコードを書いておきます。コントロール配列は使いませんでした。

↓現物
http://www.nurs.or.jp/~lionfan//hatena_blog/button_and_num.xlsm

↓コード

Dim 最後に押したマス As String

Private Sub CommandButton1_Click()
Me.Controls(最後に押したマス).SetFocus
SendKeys ("1")
End Sub

Private Sub CommandButton2_Click()
Me.Controls(最後に押したマス).SetFocus
SendKeys ("2")
End Sub

Private Sub CommandButton3_Click()
Me.Controls(最後に押したマス).SetFocus
SendKeys ("3")
End Sub

Private Sub CommandButton4_Click()
Me.Controls(最後に押したマス).SetFocus
SendKeys ("4")
End Sub

Private Sub CommandButton5_Click()
Me.Controls(最後に押したマス).SetFocus
SendKeys ("5")
End Sub

Private Sub CommandButton6_Click()
Me.Controls(最後に押したマス).SetFocus
SendKeys ("6")
End Sub

Private Sub CommandButton7_Click()
Me.Controls(最後に押したマス).SetFocus
SendKeys ("7")
End Sub

Private Sub CommandButton8_Click()
Me.Controls(最後に押したマス).SetFocus
SendKeys ("8")
End Sub

Private Sub CommandButton9_Click()
Me.Controls(最後に押したマス).SetFocus
SendKeys ("9")
End Sub

Private Sub CommandButton0_Click()
Me.Controls(最後に押したマス).SetFocus
SendKeys ("0")
End Sub



Private Sub TextBox1_Enter()
最後に押したマス = TextBox1.Name
End Sub

Private Sub TextBox2_Enter()
最後に押したマス = TextBox2.Name
End Sub

Private Sub TextBox3_Enter()
最後に押したマス = TextBox3.Name
End Sub

Private Sub TextBox4_Enter()
最後に押したマス = TextBox4.Name
End Sub

Private Sub TextBox5_Enter()
最後に押したマス = TextBox5.Name
End Sub

Private Sub TextBox6_Enter()
最後に押したマス = TextBox6.Name
End Sub

Private Sub TextBox7_Enter()
最後に押したマス = TextBox7.Name
End Sub

Private Sub TextBox8_Enter()
最後に押したマス = TextBox8.Name
End Sub

Private Sub TextBox9_Enter()
最後に押したマス = TextBox9.Name
End Sub

Private Sub TextBox0_Enter()
最後に押したマス = TextBox0.Name
End Sub

2013/08/22 17:30:14

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません