Softex CelwareTech Blog
Excel VBA2026-05-28

入力規則リストを前後へ切り替えるExcel VBA汎用プロシージャ

選択セルの入力規則リストを取得し、現在値を1つ前または1つ次の候補へ切り替えるChangeDownValue_MoveSpinButton / ChangeUpValue_MoveSpinButtonを解説します。

Excel VBA汎用プロシージャ入力規則配列入力補助

概要

ChangeDownValue_MoveSpinButtonChangeUpValue_MoveSpinButtonは、入力規則リストが設定されたセルの値を、リスト内の1つ前または1つ次の候補へ切り替えるプロシージャです。

EventShowMoveSpinButton_Valueで作成した左右ボタンのOnActionに設定して使います。

使う場面

  • 入力規則リストの候補を矢印ボタンで切り替えたい
  • ステータス、区分、工程名などを順番に変更したい
  • 選択セルの入力規則リストを読み取り、現在値を基準に変更したい
  • 数値増減ではなく、文字列候補の前後移動を共通化したい

使用例

EventShowMoveSpinButton_Valueで作成した図形に、OnActionとして割り当てます。

ShapeDown.OnAction = "ChangeDownValue_MoveSpinButton"
ShapeUp.OnAction = "ChangeUpValue_MoveSpinButton"

コピー可能な実装コード

ChangeDownValue_MoveSpinButton.bas
vba
コードを読み込み中...

初心者向けコード解説

最初にChangePushedButtonColorでクリックされたボタンの色を一時的に変更します。次にGetSelectionCellで現在選択中のセルを取得し、ModifyTargetCountで複数セル選択時も先頭1セルへ絞ります。

GetCellValidationでは、選択セルに設定された入力規則リストを一次元配列として取得します。リストが取れない場合は、処理を終了します。

値を切り替える本体はChange__CellValueByListです。現在値が配列の何番目かをGetNumFromArray1Dで調べ、上方向なら次の要素、下方向なら前の要素をセルへ代入します。

関連記事

注意点

  • 現在選択中のセルを対象にするため、クリック前の選択状態が重要です。
  • 対象セルにリスト形式の入力規則がない場合は何もしません。
  • 現在値がリスト内に見つからない場合は、上方向でも下方向でも先頭候補に寄せる挙動になります。
  • リストの順番がそのまま切り替え順になります。
  • Change__CellValueByListは内部用のPrivate Subとして、この記事のコード内に含めています。

軽いまとめ

この2つのプロシージャは、図形ボタンから入力規則リストの値を切り替えるための橋渡し役です。候補リストの取得、現在値の位置判定、セル値の変更を分けているため、入力補助UIの部品として再利用しやすくなります。

この技術で業務改善しませんか?

Excel VBA・GAS・Webアプリで業務の自動化ツールを開発しています。 「こんなことできる?」というご相談だけでもお気軽にどうぞ。

無料相談はこちら →