Excel VBA質問箱 IV

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

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


11945 / 13645 ツリー ←次へ | 前へ→

【13104】フォームのコントロールのフォーカスを自身にもどしたい ようこ 04/4/23(金) 16:36 質問
【13105】Re:フォームのコントロールのフォーカスを... Jaka 04/4/23(金) 16:58 回答
【13108】Re:フォームのコントロールのフォーカスを... ようこ 04/4/23(金) 17:14 質問
【13110】Re:フォームのコントロールのフォーカスを... ようこ 04/4/23(金) 17:23 質問
【13112】Re:フォームのコントロールのフォーカスを... Jaka 04/4/23(金) 17:41 回答
【13120】Re:フォームのコントロールのフォーカスを... ichinose 04/4/23(金) 18:34 発言
【13136】Re:フォームのコントロールのフォーカスを... shousuke 04/4/23(金) 23:04 発言
【13176】Re:フォームのコントロールのフォーカスを... ようこ 04/4/26(月) 9:36 お礼[未読]

【13104】フォームのコントロールのフォーカスを自...
質問  ようこ  - 04/4/23(金) 16:36 -

引用なし
パスワード
   フォームのコントロールに入力する際、空白又はエラーであればそのコントロール
にもう一度フォーカスを戻そうとしたのですがフォーカスがなくなってしまいました。どこへ行ったのか知りたいのですが。それと、フォーカスを戻すコードもどな
たか教えて頂けますか。すみません、よろしくお願いします。

【13105】Re:フォームのコントロールのフォーカス...
回答  Jaka  - 04/4/23(金) 16:58 -

引用なし
パスワード
   コントロールと言っても色々ある上に、どのような事なのか解りません。
詳しく書かれていないので、だいたいだと。
(因みに、TextBox1のExitで、使おうと思ってもよう動きません。)

ComboBox1.SetFocus

【13108】Re:フォームのコントロールのフォーカス...
質問  ようこ  - 04/4/23(金) 17:14 -

引用なし
パスワード
   ▼Jaka さん:

Private Sub txtmaster1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Cancel = True
If txtmaster1 = "" Then
MsgBox "工事名を入力して下さい"
With frmmaster.txtmaster1
.BackColor = &H80000013
.SetFocus
End With
Else
frmmaster.txtmaster1.BackColor = &H80000005
End If
End Sub
なんです。空白ならフォーカスをもとのtxtmaster1に戻したいのですが。
わかりにくくて本当、すみません。

【13110】Re:フォームのコントロールのフォーカス...
質問  ようこ  - 04/4/23(金) 17:23 -

引用なし
パスワード
   まさに
   (因みに、TextBox1のExitで、使おうと思ってもよう動きません。)
ですか?

【13112】Re:フォームのコントロールのフォーカス...
回答  Jaka  - 04/4/23(金) 17:41 -

引用なし
パスワード
   ▼ようこ さん:
>まさに
>   (因みに、TextBox1のExitで、使おうと思ってもよう動きません。)
>ですか?

そうですね!

もう帰るので、簡単に書くと。
フォームレイアウトによって変わります。

SendKeys "{UP}"

【13120】Re:フォームのコントロールのフォーカス...
発言  ichinose  - 04/4/23(金) 18:34 -

引用なし
パスワード
   Jaka さん、ようこ さん、こんばんは。

>>まさに
>>   (因みに、TextBox1のExitで、使おうと思ってもよう動きません。)
>>ですか?
>フォームレイアウトによって変わります。
フォームのSetfocusメソッドには、色々と問題が出ているようですよ!!
フレームの中にTextboxを置いたりしても駄目みたいです。
↑は、私も苦労しました。

後、Excelバージョンにもよるのでしょうか?
Excel2000(SP-3)で、
例えば、ユーザーフォーム(Userform1)にテキストボックスを3つのみを貼り付けました
(Textbox1〜Textbox3)。

それで、フォームモジュールに以下のコード
'=================================================================
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'この中のコードは、ようこ さんが提示されたコードをTextbox1に置き換えたものです
  Cancel = True
  If TextBox1.Text = "" Then
   MsgBox "工事名を入力して下さい"
   With TextBox1
    .BackColor = &H80000013
    .SetFocus
    End With
  Else
   TextBox1.BackColor = &H80000005
   End If
End Sub
'====================================================================
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  With TextBox2
   If IsNumeric(.Text) = True Then
     MsgBox "数字は駄目"
     Cancel = True
     .SelStart = 0
     .SelLength = Len(.Text)
     .SetFocus
     End If
   End With
End Sub
'=====================================================================
Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  With TextBox3
   If IsNumeric(.Text) = False Then
     MsgBox "数字以外はは駄目"
     Cancel.Value = True
     .SelStart = 0
     .SelLength = Len(.Text)
     End If
   End With
End Sub

Textbox1でのExitイベント、
フォーカスは、ちゃんと戻ってきています。
但し、空白の場合もそれ以外の場合も・・・。
つまり、Textbox1から逆に抜ける事ができません。
(色は変わるけどね!!)

次にTextbox1のイベントコードを削除又は、コメントにした場合、
Textbox2及び、Textbox3では、「エラーの場合は、フォーカス移動しない」
という仕様で動いています。

ただ、Exitイベントでこういうコードを書いてしまうと終了ボタン押したときも
Exitイベントが動くのでそれはそれで厄介なんですが・・・。


Jakaさんもおっしゃっていましたが、
Excelのバージョンから細かいフォームのレイアウト(でなくても、再現できる仕様)
を記述してみて下さい。

【13136】Re:フォームのコントロールのフォーカス...
発言  shousuke WEB  - 04/4/23(金) 23:04 -

引用なし
パスワード
   参考にならないかもしれませんが...
Me.Text1.Activate
などのコードを加えてたらどうですか。
エラーがでるようであれば、
On Error Resume Nextでトラップしてあげればと思います。
確かにエクセルに限らずACCESSでもSetFocusは問題があるみ
たいで、結構悩まされます。

【13176】Re:フォームのコントロールのフォーカス...
お礼  ようこ  - 04/4/26(月) 9:36 -

引用なし
パスワード
   jakaさん、shousukeさん、icinoseさん、ありがとうございます。返答が遅くなった事を気にしながら(家のパソコン今修理に出しているんです。)今朝出勤して見てみると、いろいろ教えて頂いているので感激しています。今から従って実行してみます。setfocus くせものですね。これで約1週間悩まされていて、別の方法を考えようかとも思ったのですが、なんだか気になって放り出す事ができなくて...
ありがとうございます。うまくいかなければまた質問させてください。

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