• 締切済み

Excel マクロでスピンボタンの操作

A1とB1のセルには、それぞれ数値が入力されています。 その下(A2とB2)にはA1とB1の値を使って計算された値があります。 A1とB1の値はスピンボタンを使って1ずつ値が大きくなったり小さくなったりします。 そして、 A2とB2の値の大小を比べて、 ・A2が小さければ、A1の値を1大きくする ・B2が小さければ、B1の値を1大きくする ・等しければ、何もしない ということをしたいです。 マクロを組むしかないと思ったのですが、どのようにやれば良いのでしょうか? Excelはそこそこできますが、マクロはほとんどわかりません。 スピンボタンを使わなくても、同じようなことが自動でできれば構いません。 よろしくお願いしいます。

みんなの回答

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

No2 merlionXXです。 おっしゃる式を入れて試しましたが、数字を増やしていくかぎりはおっしゃるような現象を再現できません。 どうやらお役に立てないようです。 Σ(~∇~;)

787B-GT4
質問者

お礼

なんだか自分でもよくわからないのですが、#1さんのを元にして、 一つ目には Sub スピン1_Change() If Range("E8").Value < Range("F8").Value Then Range("C8").Value = Range("C8").Value + 1 End If If Range("E8").Value > Range("F8").Value Then Range("D8").Value = Range("D8").Value + 1 Application.Run "スピン2_Change" End If If Range("E8").Value < Range("F8").Value Then Range("C8").Value = Range("C8").Value + 1 End If If Range("E8").Value > Range("F8").Value Then Range("D8").Value = Range("D8").Value + 1 Application.Run "スピン2_Change" End If If Range("E8").Value = Range("F8").Value Then Exit Sub End If End Sub 二つ目には Sub スピン2_Change() If Range("E8").Value < Range("F8").Value Then Range("C8").Value = Range("C8").Value + 1 Application.Run "スピン2_Change" End If If Range("E8").Value > Range("F8").Value Then Range("D8").Value = Range("D8").Value + 1 End If If Range("E8").Value < Range("F8").Value Then Range("C8").Value = Range("C8").Value + 1 Application.Run "スピン2_Change" End If If Range("E8").Value > Range("F8").Value Then Range("D8").Value = Range("D8").Value + 1 End If If Range("E8").Value = Range("F8").Value Then Exit Sub End If End Sub ダブっているところがあるのですが、一つだとなぜか途中で止まってしまいます。 これだと、一応止まらないのですが、今度はスタック領域が不足してしまいます。 何か良い解決方法はあるでしょうか…?

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

最初から要望に無理があるのでは? どんな式をいれているのか存じませんが、スピンボタンで1下げて小さくなれば1を足すってことは、結局動きが止まってしまうことになりませんか?

787B-GT4
質問者

補足

すみません。書き方が悪かったです。 「A1とB1の値はスピンボタンを使って1ずつ値が大きくなったり小さくなったりします。」 と書きましたが、実際、スピンボタンを使って値を小さくすることはなく、A2とB2が同じ値になるまでA1とB1を1ずつ大きくしていきたいということです。 ちなみに入れている式ですが、C1にもう一つ値があり、 A2は「=C1*A1+(A1-1)*A1/2」 B2は「=(C1+A1)*B1+(B1-1)*B1/2」です。 「C1」から始まる「A1」個分の自然数の和と、 さらにそのあとから始まる「B1」個分の自然数の和を、 比べたいのです。 つまり、1+2+3+…+13+14=15+16+…+20 や、 2+3+…+7=8+9+10 といったものを探したいのです。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

ご希望の動きになるかどうかは?です。 スピンボタンを右クリック マクロの登録=>新規作成をクリックしたら Sub スピン1_Change() End Sub が表示されるので If Range("A2").Value < Range("B2").Value Then Range("A1").Value = Range("A1").Value + 1 End If If Range("A2").Value > Range("B2").Value Then Range("B1").Value = Range("B1").Value + 1 End If を間にコピィ 同様にもう片方のスピンボタンも右クリック、マクロの登録、新規作成 Sub スピン2_Change() End Sub の間に同じコードをコピィして、動作確認してみてください。

787B-GT4
質問者

お礼

早速の解答ありがとうございます。 試してみたところ、 A2の値が小さかったので、A1が1増え、 まだA2の値が小さかったので、A1が1増え、 次にB2の値が小さかったので、A2が1増え、 今度は、A2の値がまだ小さかったのですが、動作が止まってしまいました。

787B-GT4
質問者

補足

すみません。下のお礼欄ですが、 5行目は 「次にB2の値が小さかったので、B1が1増え、」 の間違いでした。

関連するQ&A

  • エクセル・スピンボタンを使った時にイベントマクロを発生させたい

    エクセルでスピンボタンを使って数値を上下させたときに イベントマクロを発生させたいです セルC1の入力規則のリストから氏名を選択するとグラフが表示されるのですが いちいちリストから選択するのが面倒なので スピンボタンでリストの上から順番に見ていけるようにもしたいのです スピンボタン(セルA1にリンク)を操作 A1…スピンボタンにリンクして数字が変わる B1…INDEX関数でA1の数字とリストから氏名が選択される B1の値をC1に貼り付ける←ここをマクロにしたい イベントマクロで Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub Range("B1").Copy Range("C1").Select ActiveSheet.Paste End Sub としてもうまくいきません スピンボタンにリンクしたセルの値が変わったと時は Worksheet_Changeだと無理なので、どうしたらいいでしょう わかりにくい説明で申し訳ありません

  • Excel スピンボタン 対象範囲(訂正)

    http://oshiete1.goo.ne.jp/qa4685879.htmlの訂正版です。 説明が不十分だったため変更します。 Excel2003での質問なのですが、 スピンボタンのリンク先を複数のセルに指定したいのですが、やり方がわからずに困っています。 具体的には 3つのセルの値を1つのスピンボタンで加減するように組みたいのです。 3つのセルの値は違うもので、=で繋げたくはありません。 A1 B1 C1 ▲ 1  5  6  ▼ ↑の状態で「▲」を押すと A1 B1 C1 ▲ 2  6  7  ▼ になる物を作りたいです。 (1)A1、B1,C1を個々で+-するスピンボタンと (2)A1、B1、C1を一括で+-するスピンボタンを作りたいのです。 (1)は作れたのですが(2)のやり方がわかりません。 1つなら簡単にリンク先として指定できたのですが、複数選択するとエラーになってしまいます。 どうしたらいいでしょうか? やはりマクロ等を組まないといけないのでしょうか? 方法を知っている方がいらっしゃいましたら教えていただけると嬉しいです。 よろしくお願いします。

  • エクセルのスピンボタン

    エクセルで自動入力のためのマクロを作っています。 その中で、日付をスピンボタンで動かしたいのですが、どうしても「1904.1.1」になってしまいます。 OSはmacでエクセルは98か2001です。 winでの方法でもかまいません。教えてください。

  • エクセルのスピンボタンのコピーについて

    エクセルのスピンボタンのコピーについて いろいろ検索し、試しましたがうまくいきません。 A2セルに氏名(A3,A4と下に1000人程います) B1セルに日付(C1,D1と右に1ヶ月分) B2セルにスピンボタンを設定し、そのスピンボタンを縦1000行、横30列にコピーしたいのですが うまくいきません。。。 佐藤さんが12/1に3回⇒セルB2へ「3」 山田さんが12/2に5回⇒セルC3へ「5」 という感じで表示させたくて、B2へスピンボタンを設定しコピーしたのですがうまくいきません。 どうしたらできるでしょうか。 スピンボタンはフォームコントロールのものを使用しています。 Windows 7 Excel2007を使用しています。

  • エクセルのスピンボタンで%は使える?

    エクセルのスピンボタンで、値の増減を0~100%まで5%きざみで、増減させたいのですが、 セルの値をパーセント表示にしており、スピンボタンを押すと、100%きざみでしか増減できません。 良い方法はないでしょうか。

  • スピンボタンの最大値を、増分にあわせて変化させたい

    エクセルにて、フォームで配置した、3つのスピンボタンの最大値を、他のボタンの増減や、初期値によって変化させたいと考えています。    A  |    B     |   C  | D  | 【初期値】|【リンクするセル】|【最大値】|【A+B】|ボタン 【初期値】|【リンクするセル】|【最大値】|【A+B】|ボタン 【初期値】|【リンクするセル】|【最大値】|【A+B】|ボタン      |【Bの合計】    | 【振り分けれる最大値】 例)    A  |   B   |  C  | D  |  50  | 1    | 49 | 51|  60  |      | 49 | 60|  50  | 50   |  0 |100|      | 51   |  49 元の最大値=100、振り分けれる最大値=100のとき、B1に1、B3に50振り分けるようにスピンボタンを動作させたときに求められる最大値C1~3にあわせてスピンボタンの最大値を変更させて指定し、それを超えて入力できないようにすることはできないでしょうか? 当方、WinXP、エクセル2003、マクロに関しては、マクロの記録を訂正して使う程度の知識です。

  • エクセルのマクロで悩んでます

    はじめて投稿いたします。 現在、エクセル2000でマクロを組んでいるのですが、何日も悩んでそこから動けないので質問させていただきます。 やりたいことは、 (1)検索フォームの入力テキストに記載した数値を読んで検索ボタンを押すと、 (2)データブック.xls内の完全に一致した数値のセルの行をアクティブにして (3)その行のA列からO列の値をコピーして (4)入力ブック.xlsの入力シートのB4:B18に数値だけ貼り付け したいと考えています。 検索フォームは入力ブック.xls内で作成しています。 今のところ、(3)でA列の値を読んで、(4)でB4セルに貼りつけということはできているのですが、複数になるとできていません。 根気よく、同じプログラムを書くのが良いのでしょうか? かなり面倒なので、もっと簡単にかける方法があれば教えてください。

  • エクセルのマクロの組み方に詳しい方

    エクセルのマクロの組み方に詳しい方はいらっしゃいませんか? 今、売り上げの記入を自動化できるようにマクロを組もうと試みています。 しかし、マクロの本を見てもちんぷんかんぷんです 。 頭の中で考えていることですが… まずデータベースとしてエクセル、またはそれに代用できるファイルに手入力で仕入れの詳細を記入していきます。 これは自分で入力していくので問題ありません。 ここからが問題です。 データベースとは別のエクセルにマクロを登録して、データベースから仕入れ情報を検索したいのです。 例えば… A1商品名、A2重量、A3仕入値…というように項目を作っていきます。 そしてB行に検索したい文字、数値を入力します。 そしてボタン1をクリックすると、B 行に入力した値に一致するデータを行ごとD行に呼び出します。 最後にD行の売上の項目に売上を記入して、更新したD行のデータをシート2、又は別のエクセルファイルに張り付けられるようにしたいです。 データの張り付けを文字のあるセルの最後尾の下の空白のセルに張り付けていけるようにしたいです。 どのようなマクロを組むと良いでしょうか?どのような言語を使うと良いでしょうか? 詳しい方是非是非教えて下さい。。

  • エクセルのマクロ

    エクセルのマクロでわからないことがあり質問なんですが A1セルの数値がリアルタイムに更新されていて このA1セルの数値が更新されるたびに B1とB2にA1セルの最新の値を交互にコピーしていくマクロを 作りたいんですがうまくいきません。 例としては A1に1と表示→B1に1と表示 A1に7と表示→B2に7と表示 A1に18と表示→B1に18と表示 これをA1セルが更新され続ける限り繰り返しすマクロです。 どなたか教えていただけるとありがたいです。

  • エクセルでスピンボタンとスクロールバーについて

    エクセルでスピンボタンとスクロールバーについて エクセル2000です。 フォームのスピンボタンとスクロールバーをワークシート上に配置した場合、両者ともほぼ同じ働きをしてくれます。 ところが、大きな違いが有ります。 スピンボタンは上向き▲で数値が大きくなっていきます。これは感覚的にしっくりきます。 ところが縦向きのスクロールバーは上向き▲で数値が逆に小さくなっていきます。これはちょっと違和感があります。 それなら、スピンボタンを使えばいいだけのことと言われそうですが、スピンボタンにはバーがないのでスライドさせて数値を動かすことができないのでスクロールバーを使いたいのです。 もちろん数式を用いて、セルの表示上でそうなるようにはできますが、それではリンク先セルに直接数値を入力ができなくなり不便です。 スクロールバーで上向き▲で数値が大きくなるような設定にはできないのでしょうか? スクロールバーを縦ではなく横向きに配置すれば右スクロールで数値が増え、数直線と同じでしっくりくるのですが、レイアウトの都合で縦向きに配置したいのです。 わがままな質問ですみません。 よろしくお願いします。 (o。_。)oペコッ. (なお、同じ質問を1時間ほど前に投稿したつもりだったのですが、なぜか反映されていないので再度質問いたしました。もし二重になっていたら申し訳ありません。)

専門家に質問してみよう