| 
    
     |  | 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のバージョンから細かいフォームのレイアウト(でなくても、再現できる仕様)
 を記述してみて下さい。
 
 
 |  |