top of page

​タグ一覧

配列処理(67)

階層化フォーム(33)

ファイル操作(23)

シート・セル操作(11)

コード自動生成(10)

ユーザーフォーム(8)

図形操作(7)

GAS(5)

アニメーション(5)

技術解説(4)

副業(4)

考え方(4)

条件付き書式(4)

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

Enum(3)

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

ココナラ(3)

クリップボード(3)

介護(3)

開発効率化(2)

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

PDF(2)

フリーランス(2)

リスキリング(2)

Excel(2)

Excel小ネタ(2)

数学(2)

Outlook(2)

文字列操作(2)

小説(2)

HTML(2)

JavaScript(2)

日報(2)

カレンダー(2)

パズル(2)

ステータスバー(1)

コード解析(1)

静的変数(1)

OneDrive(1)

バックアップ(1)

可変長引数配列(1)

ブック処理(1)

スクレイピング(1)

スプレッドシート(1)

coconala(1)

リボン登録マクロ(1)

QRコード(1)

実行予約(1)

給与計算(1)

VBA不使用(1)

リボン(1)

超勉強会(1)

六角形(1)

Excel遊び(1)

ボウリング(1)

時計(1)

スピログラフ(1)

図名描写(1)

連想配列(1)

イベント(1)

溶接ロボット(1)

VBA(1)

脱Excel(1)

Discord(1)

ECサイト(1)

CSV(1)

楽天(1)

保育士(1)

シフト表(1)

CDP(1)

楽天市場(1)

経理(1)

javascript(1)

医療(1)

文書作成(1)

LookerStudio(1)

シフト(1)

セキュリティ(1)

発注書(1)

ショートカット(1)

WebAPI(1)

色操作(1)

罫線(1)

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

ライブラリ処理(1)

開発事例(1)

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

概要

 書籍「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モジュールの自動追加

コメント

5つ星のうち0と評価されています。
まだ評価がありません

評価を追加
Softex-Celware

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

  • Facebook
  • Twitter
  • YouTube

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

bottom of page