Excel VBA質問箱 IV

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

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


17701 / 76738 ←次へ | 前へ→

【64486】Re:TextBoxの入力制限について
回答  Hirofumi  - 10/2/15(月) 12:10 -

引用なし
パスワード
   >ご指導有難うございます。かなり時間がかかっていますが、また質問です、よろしくお願いします。
>
>>イベントが違うのでは?
>>Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
>
>その通りです。現在Private Sub CommandButton2_Click()の中に、頂いたコードを入れて、
>Cance=Trueをコメントで問題なく動作しています。ただ、Clickするまで反応が得られませんが・・・
>
>頂いたイベントでTextBox1から次の動作をさせると、日付以外は
>MsgBoxでメッセージが出て便利ですが、UserForm表示時に表示をキャンセル
>する右上の「×」を押してもこのMsgBoxが二回表示されその都度OKを押さなくてはなりません。
>・・・何かが災いしているのだと思いますが。

色々なイベントが重なって起こる事が有りえると思いますが?

「Sub CommandButton2_Click()」の中にだけ書いて有るならば
この様には成らないと思います
別に、TextBox1のイベントが有って、其処にも書かれているのでは?
UserFormのコードをUpして見て下さい

また、このコードは以下の様に使う事を想定しています

Private Sub CommandButton2_Click()

  If TextBox1.Value = "" Then
    MsgBox "TextBox1の入力が有りません"
    Exit Sub
  End If
  
  '以下処理
  
End Sub

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)

  With TextBox1
    If .Value = "" Then
      Exit Sub
    End If
    If Not IsDate(.Text) Then
      Cancel = True
      MsgBox .Value & "は入力が日付として認められません" '★変更
      .Value = "" '★追加
    Else
      .Text = Format(DateValue(.Text), "m/d")
    End If
  End With

End Sub

TextBox1の動きは、
 値が書き変わった場合、値をチェックし日付と認められる時は書式を変更して表示
 認められない場合、フォーカスをTextBox1の戻して、MsgBoxを表示
 値が無かった場合は、チェックをせず次にフォーカスを移す
と成ります

なぜ、値が無い("")場合にチェックをしないのかと言いますと
今回の様に、UserFormを開いて何もせず閉じた場合、常にチェックしていると
入力チェックに引っ掛かり直ぐに閉じられません
其処で、TextBoxのイベントでは、値が無い("")場合のチェックをせず
TextBoxの値を使って処理を行うCommandButtonのイベントの方で値の有無のチェックを行います
(既に、TextBoxのイベントで値の整合性は確保されていますので)

>コードの動き見たいのですが、
>UserFormでのステップイン(F8)のような方法は無いのでしょうか?

F8は、UserFormでも使えますよ?
もし、「×」ボタンを押した時からと言う意味なら、
「×」ボタンが押されると「Sub UserForm_QueryClose」のイベントが起きますので
例えば、その中に以下の様なダミーの処理を書いて、此れに(i = 1)ブレークポイントを設定します

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

  Dim i As Long
  
  i = 1
  
End Sub

そうすれば観られるでしょ?

0 hits

【64449】TextBoxの入力制限について Matumo 10/2/8(月) 9:32 質問
【64450】Re:TextBoxの入力制限について ponpon 10/2/8(月) 10:33 発言
【64451】Re:TextBoxの入力制限について Matumo 10/2/8(月) 11:19 質問
【64452】Re:TextBoxの入力制限について ponpon 10/2/8(月) 11:31 発言
【64453】Re:TextBoxの入力制限について Hirofumi 10/2/8(月) 11:58 回答
【64454】Re:TextBoxの入力制限について ponpon 10/2/8(月) 12:51 発言
【64455】Re:TextBoxの入力制限について mura 10/2/8(月) 16:56 回答
【64458】Re:TextBoxの入力制限について Matumo 10/2/9(火) 8:48 お礼
【64459】Re:TextBoxの入力制限について Hirofumi 10/2/9(火) 11:02 発言
【64484】Re:TextBoxの入力制限について Matumo 10/2/15(月) 8:41 質問
【64486】Re:TextBoxの入力制限について Hirofumi 10/2/15(月) 12:10 回答
【64493】Re:TextBoxの入力制限について Matumo 10/2/15(月) 15:20 質問
【64495】Re:TextBoxの入力制限について Hirofumi 10/2/15(月) 15:47 回答
【64514】Re:TextBoxの入力制限について Matumo 10/2/17(水) 10:29 お礼

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