Excel VBA質問箱 IV

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

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


24927 / 76732 ←次へ | 前へ→

【57150】Re:Cancelの解除方法
発言  kanabun  - 08/7/29(火) 0:38 -

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

>  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
0 hits

【57144】Cancelの解除方法 亜矢 08/7/28(月) 20:11 質問
【57146】Re:Cancelの解除方法 kanabun 08/7/28(月) 20:46 発言
【57149】Re:Cancelの解除方法 亜矢 08/7/28(月) 22:52 質問
【57150】Re:Cancelの解除方法 kanabun 08/7/29(火) 0:38 発言
【57151】Re:Cancelの解除方法 kanabun 08/7/29(火) 0:41 発言
【57152】Re:Cancelの解除方法 kanabun 08/7/29(火) 0:48 発言
【57153】Re:Cancelの解除方法 亜矢 08/7/29(火) 6:21 お礼
【57154】Re:Cancelの解除方法 ichinose 08/7/29(火) 7:34 発言
【57148】Re:Cancelの解除方法 neptune 08/7/28(月) 22:13 発言

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