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