- ベストアンサー
Ex
http://oshiete1.goo.ne.jp/qa4685879.htmlの訂正版です。 説明が不十分だったため変更します。 Excel2003での質問なのですが、 スピンボタンのリンク先を複数のセルに指定したいのですが、やり方がわからずに困っています。 具体的には 3つのセルの値を1つのスピンボタンで加減するように組みたいのです。 3つのセルの値は違うもので、=で繋げたくはありません。 添付ファイルの aのボタンを押すとAが±1 b を押すとBが±1 c を押すとCが±1 D を押すとA・B・C±1 される。 というものです。 (1)A1、B1,C1を個々で+-するスピンボタンと (2)A1、B1、C1を一括で+-するスピンボタンを作りたいのです。 (1)は作れたのですが(2)のやり方がわかりません。 最初の回答通りにするとb or c のボタンを押すと、B.Cの=Aの値が書き換えられてしまいます。 よってDのボタンでabcを±1したいのです。 1つなら簡単にリンク先として指定できたのですが、複数選択するとエラーになってしまいます。 どうしたらいいでしょうか? やはりマクロ等を組まないといけないのでしょうか? 方法を知っている方がいらっしゃいましたら教えていただけると嬉しいです。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
スピンボタンはフォームとコントロールツールの両方にあります、添付した図は分かりにくいかもしれませんが、赤枠で囲ったコントロールツールボックスのツールバーを開いてください。 ツールボックスの中のスピンボタンを選択して貼り付けたい位置に置いてください(この操作はフォームのスピンボタンの配置と同じ) スピンボタンを右クリックして[コードの表示]を選択 VBAのエディターが開きますので ----------------- Private Sub SpinButton1_Change() ’この間に希望の動作をするマクロを作成 End Sub ------------------ マクロの例 増減の変化を行うセルがA1,D1,G1の場合 ・同じ数字で変化させたい場合は zougen = SpinButton1.Value - 1 Range("A1,D1,G1") = Range("A1,D1,G1") + zougen SpinButton1.Value = 1 ・異なる数字で変化させる場合は zougen = SpinButton1.Value - 1 Range("A1") = Range("A1") + zougen Range("D1") = Range("D1") + zougen Range("G1") = Range("G1") + zougen SpinButton1.Value = 1 こんな感じでこの画面だコピーしたものを Private Sub SpinButton1_Change() ’ここに貼り付け End Sub ’ここに貼り付けの部分に貼り付けてください 貼り付けたらVBAエディターはそのまま閉じてください。 変更したらコントロールツールバーの[デザインモードの終了](図の緑で囲った部分)をクリック。 ※コントロールの編集時はデザインモードがONの状態で行います、スピンボタンの移動もデザインモードになってないと行えません。 分かったかな?
その他の回答 (4)
- netmaster
- ベストアンサー率28% (11/39)
A1セルの分だけですが ------------ If Range("A1") > 10 Then Range("A1") = 10 'A1セルが10より大きい場合は10に書き換え Else 'A1セルが10以下の場合は下の処理を実施 If Range("A1") < 0 Then Range("A1") = 0 'A1セルが0より小さい場合は0に書き換え End If End If ------------ この処理を前回のマクロの下に追加 セル番地変更でほかのセルにも対応できます。
お礼
毎回ありがとうございます。 今回もお陰さまで達成することができました。 ありがとうございました。
- CMLT
- ベストアンサー率40% (143/357)
No.1です。 あくまでフォームのみでやる場合ですが、No.1について誤解があるようなので補足しておきます。リンクセルをA1~D1にした場合、数式を入れて表示させるのは、それ以外のセルです。A1~D1に数式は入れません。
お礼
なるほど。そういうことですね。 勘違いしていました、申し訳ありません。 今回は回答ありがとうございました。 また、よろしくお願いします。
- web2525
- ベストアンサー率42% (1219/2850)
Dのスピンボタンはフォームのボタンではなくコントロールでのスピンボタンで Private Sub SpinButton1_Change() zougen = SpinButton1.Value - 1 Range("A1") = Range("A1") + zougen ’増減の必要な分だけ追加して下さい SpinButton1.Value = 1 End Sub こんな感じでコードを作れば、可能です。 フォームのスピンボタンにマクロを追加する場合も同じ方法が使えるか不明。
お礼
ありがとうございます。 当方初心者なものでやり方がわかりません。 解説をつけてもらうとありがたいのですが。。。
- CMLT
- ベストアンサー率40% (143/357)
一例ですが、 a、b、c、DリンクするセルをA1、B1、C1、D1にして、 実際に表示させるセルをそれぞれ =A1+D1、=B1+D1、=C1+D1 にするとか。A1~D1は文字色を白にしてしまえば見えませんし。
お礼
その方法も試しましたが。 A1などに数式を入れてもaを使うと上書きされて只の数値になってしまうので、無理でした。 アドバイスありがとうございました。
お礼
具体的な回答ありがとうございました。 とても分かりやすくスムーズに行なうことができました。 もう1つ質問させていただきたいのですが、 A1 D1 G1 それぞれに最大値と最小値を設定したいのですが、どうしたらいいでしょうか? ちなみに0~10の範囲です。 それ以上はボタンを押しても増減しないようにしたいのです。 よろしければ教えて下さい。 今回はありがとうございました。