質問: activecell.value - 1 end sub これが理にかなっていると思います。
回答: ソリューションが機能しない理由は、ユーザーがボタンをクリックしても、ワークシートのactivecell値は変更されず、セルではなくボタンをクリックしているためです。これに取り組む方法はいくつかあります。多数のボタンを作成し、1つの汎用サブルーチンで作業を行うか、セル変更イベントをトラップしてそれに応答することができます。 1つ目は、より優れたユーザーエクスペリエンスになりますが、最初に設定する作業が増えます。方法1:ボタンこのメソッドは、ボタンの名前を使用して、適切なセルで適切なアクションを実行します。概要として、すべてのボタンを作成し、それぞれに同じ汎用vbaサブルーチンを呼び出します。これにより、どのボタンがそれを呼び出しているかがわかり、適切な操作が実行されます。たとえば、d3の値を増減するために、ボタンをadd_d3やsub_d3のように呼び出すと仮定します。まず、vbaで作業を行うためのサブルーチンを作成します。sub adjustvalue() dim btnname as string dim targetcell as string dim addamount as integer btnname = application.caller targetcell = mid(btnname, 5, len(btnname)) addamount = iif(left(btnname, 3) = "add", 1, -1) activesheet.range(targetcell).value = _ activesheet.range(targetcell).value + addamount end sub それを分解する: application.callerは、呼び出し元の名前、この場合はボタンの名前を提供します 最初の4文字をスキップして、ターゲットセルの名前を最後から削除します 最初の3文字に基づいて、加算するか減算するかを判断します ターゲットセル名を使用して、ワークシートセルを更新します 次に、ボタンを作成します。それぞれのスプレッドシートにフォームコントロールボタンを追加する + そして - 必要なボタン。それぞれについて、上記のように、対象とするセルに基づいて体系的な名前を割り当てます。たとえば、上のスクリーンショットでは、最初の2つのボタンにadd_d3およびsub_d3という名前を付けることができます。 ボタンの名前を変更するには、ボタンを右クリックして選択し、ワークシートの左上にあるアドレスボックスで、名前(例:ボタン1)を新しい名前で上書きします。 最後に、サブはactivesheetを使用してセルにアクセスするため、上記は複数のシートでも機能するはずです。方法2:選択の変更これはセットアップがはるかに簡単ですが、少しハックです。まず、各セルにプラス記号とマイナス記号を付けてシートを設定し、色を付けますが、ボタンのように見せたい場合があります。例えば: 記号をテキストとしてセルに入れるには、一重引用符( ')を使用する必要があることに注意してください。 '-および'+(これは、例の上部にある数式バーに表示されます)。次に、選択されているセルの1つに応答する単一のルーチンを作成します。sub worksheet_selectionchange(byval target as range) dim numcell as range if target.count <> 1 then exit sub if target.value = "+" then set numcell = target.offset(0, -1) numcell.select numcell.value = numcell.value + 1 elseif target.value = "-" then set numcell = target.offset(0, 1) numcell.select numcell.value = numcell.value - 1 end if end sub それを分解する: サブルーチンの名前は重要です-ユーザーが任意のセルをクリックしたときにexcelにサブルーチンを実行するように指示します targetパラメータは、ユーザーがクリックしたセルですが、ドラッグして選択することもできます。最初にサイズが正確に1であることを確認し、そうでない場合は終了します。 次に、その値で+または-の値を確認します。引用符をチェックする必要がないことに注意してください。 次に、offsetコマンドを使用して、+または-のどちらの開始セルを処理しているかに応じて、左または右のセルを検索します 数値セルを取得したら、まずそれを選択し、次にその値を上下に変更します 数値セルを選択するのは、選択範囲をoff+または-セルに移動するためです。もう一度クリックします。これらのセルで作業する場合は、このサブルーチンを一時的に無効にする必要があります。たとえば、上部にexit sub行を挿入します。小さなメモ:worksheet_selectionchangeは、シートのマクロで作業している場合に使用するものです。 thisworkbookモジュールで作業している場合は、グローバル選択変更サブルーチンを使用する必要があります。private sub workbook_sheetselectionchange(byval sh as object, byval target as range) 'code goes in here end sub 同じコードが機能するはずです。この場合、ワークブックのすべてのシートで機能します。両方の例を示すスプレッドシートの例 here 。