top of page

​タグ一覧

配列処理(76)

シート・セル操作(34)

階層化フォーム(33)

ファイル操作(31)

開発事例(26)

図形操作(24)

設計思想(14)

講座実施報告(12)

開発効率化(10)

ユーザーフォーム(10)

コード自動生成(10)

ココナラ(9)

数学(9)

文字列操作(8)

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

GAS(7)

Webアプリ(6)

副業(5)

アニメーション(5)

技術解説(4)

その他(5)

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

OneDrive(4)

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

クリップボード(4)

条件付き書式(4)

介護・福祉(4)

小説(3)

HTML(3)

JavaScript(3)

公開ツール(3)

Enum(2)

PDF(2)

フリーランス(2)

リスキリング(2)

Outlook(2)

Discord(2)

シフト表(2)

LookerStudio(2)

日報(2)

カレンダー(2)

パズル(2)

小ネタ(2)

コード解説(2)

クラスモジュール(2)

Antigravity(2)

デスクトップアプリ(2)

スクレイピング(1)

スプレッドシート(1)

QRコード(1)

実行予約(1)

給与計算(1)

VBA不使用(1)

超勉強会(1)

溶接ロボット(1)

楽天市場(1)

経理(1)

医療(1)

文書作成(1)

発注書(1)

WebAPI(1)

学校(1)

CAD(1)

PowerShell(1)

python(1)

ChangeValueCell|セルの値を上限下限内で増減する


この部品でできること

ChangeValueCell は、指定したセルの値を、決めた増減幅で増やしたり減らしたりするExcel VBAの汎用プロシージャです。

  • セル・増減幅・増やすか減らすかを渡すだけで、セルの値を書き換える

  • 上限値・下限値を指定すると、それを超えないようにクランプ(頭打ち)してくれる

  • 上限・下限は省略可能なので、範囲を決めない単純な加減算としても使える

  • 値が0に極めて近くなったときに指数表記(1E-17のような表示)になってしまう問題への対策も含んでいる

 

使いどころ

  • ボタンを押すたびにセルの値を1つずつ増減させたいとき(EventShowSpinButton_Multiがこの用途で使っています)

  • パラメータの値を「0〜100の範囲でしか増減させたくない」のように、入力できる範囲を制限したいとき

  • スピンボタンや、ワンクリックで数値を調整するUIを自作したいとき

 

コード

 

使い方・引数

引数は5つです。MaxValueMinValueは省略可能です。

  • Target(Range)・・・増減対象のセル

  • Step(Double)・・・増減値

  • Up_True(Boolean)・・・Trueで増加、Falseで減少

  • [MaxValue](Double)・・・増減の上限値。省略時は上限なし

  • [MinValue](Double)・・・増減の下限値。省略時は下限なし

呼び出し例は次のとおりです。

Up_TrueTrueを渡すとStep分だけ加算、Falseを渡すとStep分だけ減算します。MaxValueMinValueを両方省略すれば、上限下限を気にしない単純な加減算として使えます。

 

依存プロシージャ

S__AddValueToCell(0付近での指数表示対策)にのみ依存していますが、上のコードブロックに含めているので、そのまま標準モジュールに貼り付ければ動作します。

 

応用・注意点

浮動小数点数は、計算結果が0に極めて近いとき(例えば0.00000000000000012のような値)に、セルの表示が指数表記(1.2E-16)になってしまうことがあります。これはVBAの計算誤差によって、本来ぴったり0になるはずの引き算が、ごくわずかにずれた値になってしまうために起きます。

S__AddValueToCellでは、計算結果の絶対値が0.000001未満なら「実質0とみなして0を代入する」ことで、この指数表示を防いでいます。増減を繰り返すセルで表示が急に読みにくくなる、というありがちな不具合への対策です。

MaxValueMinValueの判定は、Stepの符号とUp_Trueの組み合わせで場合分けしています。例えば「減少方向にマイナスのStepを渡す」といった通常想定しない組み合わせにも対応できるようになっていますが、基本的にはStepは正の値を渡し、増やすか減らすかはUp_Trueだけで指定する使い方をおすすめします。

 

まとめ

ChangeValueCell は、対象セル・増減幅・方向を渡すだけでセルの値を増減できる汎用プロシージャです。上限下限を指定すればクランプ処理も自動でやってくれるので、スピンボタンのような「範囲を決めて数値を調整するUI」を自作するときの土台として使えます。

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

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

softex-celwareロゴ 透過 横長.png

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

  • Facebook
  • Twitter
  • YouTube

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

bottom of page