top of page

​タグ一覧

配列処理(73)

階層化フォーム(33)

ファイル操作(28)

開発事例(22)

シート・セル操作(18)

図形操作(13)

コード自動生成(10)

ユーザーフォーム(9)

文字列操作(8)

設計思想(7)

開発効率化(6)

数学(6)

GAS(5)

アニメーション(5)

技術解説(4)

講座実施報告(5)

イミディエイトウィンドウ(4)

Googleスプレッドシート(4)

副業(4)

クリップボード(4)

条件付き書式(4)

その他(4)

ココナラ(3)

小説(3)

HTML(3)

JavaScript(3)

OneDrive(2)

イベントプロシージャ(2)

Enum(2)

PDF(2)

フリーランス(2)

リスキリング(2)

Outlook(2)

介護(2)

Discord(2)

シフト表(2)

LookerStudio(2)

日報(2)

カレンダー(2)

罫線(2)

パズル(2)

小ネタ(2)

コード解説(2)

クラスモジュール(2)

ステータスバー(1)

コード解析(1)

バックアップ(1)

可変長引数配列(1)

ブック処理(1)

スクレイピング(1)

スプレッドシート(1)

coconala(1)

リボン登録マクロ(1)

QRコード(1)

実行予約(1)

給与計算(1)

VBA不使用(1)

リボン(1)

超勉強会(1)

スピログラフ(1)

図名描写(1)

連想配列(1)

溶接ロボット(1)

保育士(1)

楽天市場(1)

経理(1)

医療(1)

文書作成(1)

発注書(1)

ショートカット(1)

WebAPI(1)

色操作(1)

スーパー開発ショートカット(1)

ライブラリ処理(1)

放課後等デイサービス(1)

児童福祉支援(1)

学校(1)

UI(1)

CAD(1)

カーソル操作(1)

IkiKaiso2.xlam|ボタン設置グループ「▲▼ボタン(スピンボタン)」の解説

更新日:1月11日

概要

 書籍「Excel VBA開発を超効率化するプログラミングテクニック」の特典であるIkiKaiso2.xlamのリボン登録マクロの解説のための特設ページです。


出版社の書籍のページ⇒https://gihyo.jp/book/2024/978-4-297-14023-6


リボン登録マクロ全体解説ページ⇒https://www.softex-celware.com/post/ikikaiso2


 本ページではIkiKaiso2.xlamの「ボタン設置」グループの「▲▼ボタン」の解説をします。

▲▼ボタン

解説

 用途

 特定のセルの値を増減させる▲▼ボタン(上下ボタン、スピンボタン)の設置を効率的に行う


 使い方

 実際に使っている様子の動画を下記でご確認ください。


 手順は次の通りです。

①:▲▼ボタンを設置するセル範囲を選択する

②:「▲▼ボタン」をクリック

③:値の増減の変化量をインプットボックスで入力してOK

④:値の増減の最小値をインプットボックスで入力してOK(何も入力しなかった場合は増減の下限無し)

⑤:値の増減の最大値をインプットボックスで入力してOK(何も入力しなかった場合は増減の上限無し)

⑥:▲▼ボタンが自動的に設置される。



 通常のやり方およびその比較

 ▲▼ボタンは一般的に「スピンボタン」と呼びます。

 このスピンボタンの通常の設定の仕方は下記図のように「フォームコントロール」を利用する方法があります。具体的に、「開発」タブ→「挿入」→「スピンボタン」からボタンを設置し、最小値、最大値、変化の増分(変化量)、リンク先セルなどのコントロールを設定して完了です。(ちなみにActiveXコントロールのスピンボタンはExcel上で廃止前提ですので使用は非推奨とします。)

通常のスピンボタンの設置方法

 紹介しているリボン登録マクロによる「▲▼ボタン」の設置は、この通常のやり方よりも高速かつ、柔軟な設定でスピンボタンが設置可能です。

 さらに、上記図にも書いてありますが、フォームコントロールによるスピンボタンは次のようなことができません。

  • 0未満(マイナスの値)は設定不可能

  • 変化量は整数単位のみ(0.1などは設定不可)

  • 最小値、最大値は必ず設定しなければならない

  • 最大値は最大30000まで ⇒ 日付の増減には使えない


 リボン登録マクロの「▲▼ボタン」ではこれらの「フォームコントロール」のスピンボタンでできないことも実現しています。

  • 最小値、最大値はマイナスの値も設定可能

  • 変化量は少数単位、マイナスの値も設定可能

  • 最小値、最大値は省略して下限、上限を無くすことも可能

  • 30000を超える値も対応しているので日付のシリアル値にも対応可能


 実際に次の動画のようなスピンボタンを設置可能です。




 「▲▼ボタン」の仕組み

「▲▼ボタン」の仕組みを簡単に説明すると次のようになります。

  • 「▲▼ボタン」は「▲」ボタンと「▼」ボタンの別々のコマンドボタンで構成されている

  • 「▲」ボタンと「▼」ボタンにはそれぞれ名前が設定してある。

  • 「▲」ボタンと「▼」ボタンには同じマクロが登録されており、それぞれの設定してある名前をもとに別々の処理を行っている。


 ボタンの名前に設定を保管

 以降詳しく解説します。

 「▲」ボタンと「▼」ボタンには下記図のようにそれぞれ名前が設定してあります。

 下記図では「変化量0.1、最小値-1、最大値+1」の▲▼ボタンの場合の設定です。

 「▲」ボタンには「F2_Up_0.1_-1_1」、「▼」ボタンには「F2_Down_0.1_-1_1」の名前が設定してあり、この名前が「▲▼ボタン」の設定情報となります。

ボタンの名前設定

 この名前はアンダーバー「"_"」で繋いで5つの情報を格納してあります。具体的に次のようになっています。

[対象セルアドレス(または名前定義)」_「Up/Down」_「変化量」_「最小値」_「最大値」

 上記例の「▲」ボタンには「F2_Up_0.1_-1_1」の場合は

  • 対象セルのアドレスは「F2」

  • Up・・・増加方向の処理を行う

  • 変化量は0.1

  • 最小値は-1

  • 最大値は+1

 として処理されます。


「▼」ボタンには「F2_Down_0.1_-1_1」の場合は2番目の情報が「Down」なので減少方向の処理を行うようになります。


 「▲」ボタンと「▼」ボタンはどちらも「ClickSpinButton_OnAction」というマクロ(プロシージャ名)が登録されています。

ボタンに登録されてあるマクロ


 ▲▼ボタンに登録してあるマクロ「ClickSpinButton_OnAction」

 ▲▼ボタンに登録してあるマクロ「ClickSpinButton_OnAction」について詳しく解説します。「ClickSpinButton_OnAction」では別途「ClickSpinButton」を実行する用にしています。

ClickSpinButton_OnAction

 「ClickSpinButton」の中身は下記図で解説しています。ポイントだけ抑えると次の通りです。

  • Application.Callerメソッドにてクリックされたボタンの名前を取得

  • ボタンの名前「変数:ShapeName」よりスピンボタンの設定を取得

  • GetCellByNameプロシージャを利用して処理対象のセルを参照する

  • ChangeValueCellで増減の処理を行う

ClickSpinButton

 GetCellByNameは名前定義やアドレスをもとにセルを参照する処理ですが、On Error Resume Nextを利用して、引数で渡された名前定義が存在しない場合にエラーを起こさずNothingを返すようにしています。これによって、ユーザーが困惑するようなエラーは表示せずに「処理自体は実行されない」ように構築しています。

GetCellByName

 ChangeValueCellの仕組みは次のようになっています。

 「増加or減少」「変化量」「最小値、最大値に達しているか」などをまとめて処理を行って、対象セル「Target」の値を変化させています。

 ちなみに「MaxValue」「MinValue」は増減の最大値、最小値を示していますが、こちらのデフォルト値が「-9999」となっている理由は、もし通常のデフォルト値で「0」としてしまうと最大値、最小値が0となってしまい正常に処理ができなくなります。ですので、現実的に入力しないであろう「-9999」をデフォルト値として、このデフォルト値が引数で渡されれば「最大値無し⇒上限なし」「最小値無し⇒下限無し」のような処理を実現できるようになっています。

ChangeValueCell

 リボン登録マクロ「▲▼ボタン」のクリックでコードの自動生成している

 リボン登録マクロ「▲▼ボタン」をクリックすると最初の動画の様に「対象セル」「変化量」「最小値」「最大値」などを設定すると「▲▼ボタン」が自動的に設置されていますが、これ以外に上記で説明した下記プロシージャをブック内に自動的にコードを記述しています。

  • ClickSpinButton_OnAction

  • ClickSpinButton

  • GetCellByName

  • ChangeValueCell


 さらに説明すると、標準モジュール「Mod93_SpinButton」を自動的に追加して、上記の4つのプロシージャを「Mod93_SpinButton」の中に自動的に記述するような処理を行っています。

Mod93_SpinButtonモジュールの自動追加

Excel VBAによる業務自動化・ツール開発をご検討の方へ

​"脱Excel"の前に、現状のExcelの潜在能力を120%発揮してみませんか?

Softex-Celware

​インボイス登録番号:T5810983887134

  • Facebook
  • Twitter
  • YouTube

©2023 softex-celware。Wix.com で作成されました。

bottom of page