
UserForm入力チェックでエラーの場合、当該フィールドにカーソルSetするための記述。
フィールド数が増えた際に、個々のプロシージャで行うと膨大なソース量になってしまいます。
みなさん、こんにちは。セルネッツ竹本です。
今回は、「共通ModuleでカーソルSetのソース記述量を減らそう」をテーマに、解説をしたいと思います。
入力フォームの開発に
入力ミスに強いExcelの入力画面を作ります
- 入力欄が多く、フォームのコードが膨れ上がった
- 入力ミスに気づかず、誤ったデータが登録される
- 前任者が作ったフォームを誰も直せない
そのお悩み、入力フォーム付きのExcelシステムで解決できます。Excel専門のシステム開発会社『セルネッツ』なら、入力チェック、エラー欄へのカーソル移動、原因を示す警告表示を備えた入力画面を作れます。顧客管理や販売管理の画面も、保守しやすい共通化したコードでお渡しします。
\Excel専門特化 × 低価格 × スピード対応/
全国対応・お見積もり無料
◆[Enter]キー押下で入力ミスが検知されたときのアクション
UserFormによっては、多くの入力フィールドがある場合もあります。
顧客管理や販売管理など、複数画面も普通にあります。
入力ミスが検知されたときの期待アクションは、以下のとおり。
1.当該フィールドにカーソルが止まり
2.原因と対策が警告メッセージ表示され
3.すぐさま訂正できる状態となる
ですが、上記1.をフィールドごとにプログラムでSetFocus記述すると、膨大な量になってしまいます。
‘※※※※※※※※※※※※※※※※※※※※
Sub カーソルSET_txt入力元B()
‘※※※※※※※※※※※※※※※※※※※※
With txt入力元B
.SelStart = 0
.SelLength = Len(txt入力元B)
.SetFocus
End With
End Sub
上記のような記述では、特定フィールド専用となってしまいます・・・。
◆入力フィールドへのカーソルSetは、「共通Module」に書く
フィールド数が増えても、そのフィールド名で個数分の記述をみかけることがあります。
「カーソルが止まれば良い」は正解ですが、これでは膨大なソース記述で溢れかえってしまいます。
こんなときは、以下のように共通Moduleを書きましょう。
【Point】以下はコンボボックスから値が選択され、[Enter]キー押下の瞬間です。
‘◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
Private Sub cmb1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
‘◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
‘[Enter]キー押下なら次へ or If KeyCode = 13
If KeyCode = vbKeyReturn Then Call M_カーソルSET共通処理(“txt入力元B“)
End Sub
以下が共通Moduleです。
「フィールド名」を渡すだけで、合致フィールドをUserForm上から探しあて、その場所に、カーソルが配置されます。
【Point】
For Each S_Obj In Controls は、Form上の全フィールドを一瞬で精査します。
これは可変設計ですので、1Moduleで全てのTxtフィールドを網羅できます。
‘◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
Sub M_カーソルSET共通処理(P_Obj名)
‘◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
Dim S_Obj As Object
For Each S_Obj In Controls
If S_Obj.Name = P_Obj名 Then ‘名前の一致するフィールドを探す
S_Obj.SelStart = 0 ‘ 選択する開始位置
S_Obj.SelLength = Len(ActiveControl.Value) ‘文字数分を選択する
S_Obj.SetFocus: Exit For ‘カーソルSetしたらLoopから抜け出す
End If
Next S_Obj
End Sub
◆大量ソースにしないスキルを磨こう

UserFormも他のModuleも同じ。記述は少なくシンプルに。
「ダイエット」記述は、技術力の指標にもなりますので、スキルを磨いて行きましょう。
今回のテーマは、「共通ModuleでカーソルSetのソース記述量を減らそう」について、解説を行いました。
本記事が、Excel実務の効率化において、ご参考お役立てになれば幸いです。
Excel業務改善事例ショート動画
文章だけでは伝わりにくい改善事例を、ショート動画でご覧いただけます。
◆よくある質問 ◆Excel業務改善の実例 ◆VBA・マクロ活用事例
相見積もり歓迎
入力フォーム付きのシステムは30万円〜
- 入力フォームを備えた簡易システムは30万円〜
- 複数人で使うDBの排他制御などは45万円〜
- 既存フォームの改修・引き継ぎにも対応
参考価格は入力フォームを備えた簡易システム30万円〜、複数人で同時に使うDBの排他制御などは45万円〜です(税別・基本料金込み)。相見積もりも歓迎です。Excelに向かない規模の場合は、正直にお伝えします。
\Excel専門特化 × 低価格 × スピード対応/
全国対応・お見積もり無料
