CELLNETS Excel開発の専門会社

【VBA中級】UserFormカーソルSetは、共通Moduleでソース記述を減らそう

【VBA中級】UserFormカーソルSetは、フィールド毎に書いてはソース記述が増えるだけ


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専門特化 × 低価格 × スピード対応/

無料見積もり・お問い合わせはこちら

全国対応・お見積もり無料

Excel業務改善事例ショート動画よくある質問など公開中

関連記事

Excelシステム開発

Excelを複数人で共同編集できるExcel for the webとは?Excelオンラインの共有手順と業務改善事例

更新日:2026年9月25日

Excelシステム開発

システム開発の依頼ガイド|費用相場・流れ・会社の選び方と「作りすぎない」判断軸

更新日:2026年9月24日

Excelシステム開発

予約システムの開発依頼にかかる費用相場|小規模店舗は100万円以下で作れる

更新日:2026年9月24日

Excelシステム開発

CRMシステム開発の外注費用は?依頼先の選び方と100万円以下に抑える考え方

更新日:2026年9月24日

Excelシステム開発

勤怠管理システム開発の外注費用相場|100万円以下で作る方法とプラン別料金【2026年版】

更新日:2026年9月24日

Excelシステム開発

SFAシステム開発の依頼相場は?高額SaaSに払い続ける前に知るべき「安く作る」現実解

更新日:2026年9月24日

Excelシステム開発

業務システム開発の依頼はいくら?費用相場と「100万円以下」で頼む方法

更新日:2026年9月24日

Excelシステム開発

受発注システム開発の費用相場は?外注料金の内訳と安く抑える方法を解説

更新日:2026年9月24日

Excelシステム開発

販売管理はエクセルで十分?売上管理表・発注管理表の作り方と「限界」の乗り越え方

更新日:2026年9月5日

newsite