| 
    
     |  | ▼亜矢 さん: 
 >  If MsgBox("入力エラーです.再入力しますか?", vbOKCancel) = vbOk then
 >    Textbox25=""
 >    Cancel = True
 >  Else
 >    Exit Sub
 >  End If
 > にしましたが、再入力をしますでTextboxのデータを削除しますが、
 >Textboxにフォーカスが移りません。
 
 失礼しました。
 MsgBoxを表示したとたん、Focusが失われるようです。
 
 再入力するか/再入力をCancelするか をMsgBox風に選んで分岐するようにする
 となると、
 MsgBoxを自作することしか、ぼくには思いつきませんでした。
 非常にいまいちな方法ですが、いちおう紹介しますと、、、、
 
 UserFormに Frame を追加します。(Frame1 とします)
 Frameのなかに
 ◆Label  Caption は "入力エラーです.
 再入力しますか?"    とします。
 ◆CommandButton (名前は bInputOK ) --- MsgBoxの[OK]ボタンの替わり
 ◆もうひとつCommandButton
 (名前は bInputCancel )--- MsgBoxの[Cancel]ボタンの替わり
 
 FrameのVisibleプロパティは False にしておきます。
 
 で、対象のTextBoxが TextBox1 という名前だとすると、
 以下のようなプロシージャコードをUserFormモジュールに追加してください。
 
 '------------------------------------------
 Private Sub TextBox1_Enter()
 NoControl = False
 End Sub
 
 Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
 If NoControl Then Exit Sub  '再入力Cancelモードのときは再チェックしない
 With TextBox1
 If .Text > Day(Date) Then '← ここにあなたの入力値 _
 チェック条件を書いてください
 With Frame1      '自作MsgBoxを表示します
 .Top = TextBox1.Top
 .Left = TextBox1.Left
 .Visible = True
 End With
 End If
 End With
 End Sub
 
 Private Sub bInputCancel_Click()
 Frame1.Visible = False
 NoControl = True
 CommandButton1.SetFocus  '← ここをTextBox1のExitイベントが _
 発生したときにClickされたControl に直してください
 End Sub
 
 Private Sub bInputOK_Click()
 Frame1.Visible = False
 NoControl = True
 With TextBox1
 .Text = ""
 .SetFocus
 End With
 End Sub
 
 ※とりあえず、MsgBoxの代替手段で Focus を維持するには
 こんな方法しか思いつきませんでした。
 
 どうもすみません m(__)m
 
 
 |  |