MW211 EXIT

devlog
ExcelVBA/フォーム入力欄チェックの落とし穴(1)
2020年09月10日
フォームの入力欄にて入力直後に入力チェックや補正を行う処理を実装するには
Exitイベント(フォーカスアウト)に仕込めばよい、通常は。
┌──────────────────────────────────────┐
│Private Sub TextBox_Exit(ByVal Cancel As MSForms.ReturnBoolean)             │
│    ' 入力チェックや補正                                                    │
│End Sub                                                                     │
└──────────────────────────────────────┘

とこらが、マルチページ環境のページ(タブ)の中の最後の入力欄だった場合には
ページを離脱することになり、上記イベントが効かなくなる。
(同一ページ内の他のコントロールにフォーカスがあたらないからという解釈だろうか)

ま、画面設計を巧妙にいじって、その入力欄が最後にならないように配置するというのが
回避策として無難なところだが、他者からの依頼の場合など
そうもいっていられないことがある。

ということで、水面下で回避する方法。
┌──────────────────────────────────────┐
│Private Sub MultiPage_Exit(ByVal Cancel As MSForms.ReturnBoolean)           │
│    ' 入力チェックや補正                                                    │
│End Sub                                                                     │
└──────────────────────────────────────┘
なんのことはないページ離脱時に処理を移動すればいいのだ。(ちと微妙だが)
分類:ExcelVBA