• ベストアンサー

エクセル スクロールバーにて変わる値について、現在と1個前のデータを比較したい

スクロールバーを動かすことによって次々と変わる値があるとします。今、スクロールバーを動かす前の値をコピーし、その後にスクロールバーを動かして新しい値を表示させ、一個前の値と比較したいと思っています。当初、「値のコピー→スクロールバーを動かす」というマクロをつくり、そのマクロをスクロールバーにリンクさせればいいのかと思ったのですが、スクロールバーを動かした後の値がコピーされ、1個前の値がコピーされません。どうすればよろしいでしょうか。最終的には、現在、1個前、2個前との比較を同時にしたいと思っております。よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yokomaya
  • ベストアンサー率40% (147/366)
回答No.6

ツール→マクロ→VisualBasicEditorを起動して プロジェクトエクスプローラから標準モジュールを表示すると Macro1があると思います。 仮にあなたが=random云々を入力記録したセルをA1と仮定すると その中身を消して Range("F65536").End(xlUp).Offset(1, 0).Formula = Range("A1") とすればボタンを押すつどF列に記録が溜まっていきます。 {別のセルなら最後のRange("A1")を変更してみてください。}

oderoku
質問者

お礼

すごい!仕組みが全くわからないけれど、できました!今後、この解読をしていきたいと思います。何度も丁寧に回答していただき、本当にありがとうございました!

その他の回答 (6)

  • yokomaya
  • ベストアンサー率40% (147/366)
回答No.7

仕組みを解説しておきます。 ○=RANDOM式はどこかのセルに入力があるとランダムに変動するので あなたが記録した式はなくても入力さえ起こればサイコロは振られるのです。 ○そこで順次記録ですが Range("F65536").End(xlUp).Offset(1, 0).Formulaは F65536セルでCTRL+↑を押すと見つかるセルから 一つ下のセルに入力するという意味です。 実際キーボード操作すると意味がなおわかりやすいかと。 入力するのは貴方が=RANDOMを記録したセルの値です。 この入力を契機に前述の通りサイコロは振られます。 ○ 最後に貴方が当初要望しておられた比較ですがこれは意外に難しいです。とうのは何をしてもセルに入力するとサイコロが振られてしまうため例えばスクロールバーのセルにリンクをしてしまうと意図せずサイコロは振られてしまいます。スクロールバーでなく例えばコンボボックスなどでセルを用いず実現する必要がありそうです。

oderoku
質問者

お礼

大変参考になりました。 色々試して自分のモノにしたいと思います。 この度は本当にありがとうございました。

  • yokomaya
  • ベストアンサー率40% (147/366)
回答No.5

あなたが記録しているのはVBAです。そしてそれをボタンを押して実行しています。しかも判る人には判るのですがその記録には必然がありません。 random文は先に入力しておいても構わないのです。再計算さえされれば値は変化しますので。 さて記録といってますが記述が必要です。 マクロのコードをまずVBEで見る事は出来ますか?標準モジュールかと思いますが。

  • yokomaya
  • ベストアンサー率40% (147/366)
回答No.4

>「ためていくこと」がどうすればいいかわからないのです。 すみませんが、申し上げたようにサイコロを振るが想像できないのでおお答えできません。 説明してください。

oderoku
質問者

補足

(1)表示→ツールバー→フォーム→ボタン を選択し、セル上にボタンを作成。 (2)マクロの記録 により、1つのセルに、=rounddown(rand()*(6-1)+1,0) を入力する動作をマクロ登録 (3) (1)のボタンにマクロ登録をする。 これにより、ボタンを押すたびに1~6の数字が出てくるかと思います。したいことは、ボタンを押すと、そのときの数値の他、前2回の数値も同時に表示させたいのです。ボタンを押すたびに数値がどこかに記録できればいいと思うのですが、その記録の仕方がわかりません。よろしくお願いします。

  • yokomaya
  • ベストアンサー率40% (147/366)
回答No.3

>さいころのを振ってでた数字を、過去2回前まで表示させたいのです。 念のためお伺いしますけどVBAの話と考えてよろしいですよね。 通常マクロを使わずにサイコロを振るという動作が想像しにくいものですから。 過去二回にとらわれずサイコロを振る都度いずれかのセル(列または行)に順次結果をためて行けばそれをスクロールバーの値に応じて参照すれば済むのですが。そしてVBAの話ならそのプログラム(コード)を提示願います。

oderoku
質問者

補足

すみません。VBAの話ではないです。でも、回答文中にあった「過去2回にとらわれずサイコロを振る都度いずれかのセルに順次結果をためていけば」ができれば問題解決できると思います。「ためていくこと」がどうすればいいかわからないのです。 よろしくお願いいたします。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

スクロールバーは連続して動かせて、質問者にとっては、動きの何がしかの休止時間があるのかもしれないが、それとスクロールを続けて行う、間のわずかの時間とを、区別してくれるようなコントロールではないでしょう。 だからその瞬間に値をとれという、何かの仕組みが別途いるのは自明でしょう。 (テキストボックスでも似たようなことがあり、コマンドボタンのクリックなどで、内容の確定ということで、次のステップへ進めます。) (1)コマンドボタンなどを設け、クリックしたときスクロールバーの値をとる。 それを退避変数に保存しておく (2)タイマーで、時間の経過に関連付ける (3)スクロールバーのマウス・アップのようなイベントがあれば それを使うとか スクロールバーのイベントはChangeを含め数個あるから、それらをチェックしたら。 ーー 質問にはシートに貼り付けたか、フォームに貼り付けたか、スクロールバーは「フォーム」からか「コントロールツールボックス」から 持ってきたかさえも書いてない。  #1でおっしゃっているコードも乗せる必要があるかも。  質問者の、このことで頭がいっぱいの頭の世界と、読者・回答者が初めて質問文を読んで作れるイメージ世界とは得てして違うのだということをお忘れなく。

oderoku
質問者

補足

質問が的はずれですみません。スクロールバーはフォームから持ってきました。(というかコントロールツールボックスというモノがあることを初めて知りました)。改めて申しますと、さいころのを振ってでた数字を、過去2回前まで表示させたいのです。つまり、スクロールバーによって動く数字を「1回目」「2回目」「3回目」・・・であり、そのたびごとにでる数字を、仮に1回目のが5、2回目が3、3回目が1、今回が6とでたならば、「今回6、1回前1 2回前3」と表示したいのです。 これをするには、スクロールバーを動かす前に値をコピーし、その後にバーを動かせばいいのでしょうが、これを連続でやるにはどうすればよろしいのでしょうか。ボックスによりワンクリックごとにコピーという考えは非常によくわかったのですが、実際に行うにはどうすればよろしいのでしょうか。あまりエクセルに詳しくなく、質問の仕方もこれであっているのかわかりませんが、よろしくお願いいたします。

  • yokomaya
  • ベストアンサー率40% (147/366)
回答No.1

先にCopyとっておけばいいだけでは? コード示さないと的確な回答は得られないのでは?

関連するQ&A

  • エクセルのスクロールバー

    こんにちは。いつも皆さんにお世話になってます。 エクセルの件なんですが、データを例えば1000件(行)入力した 後に、500件削除してもスクロールバーは小さくなったままで直らない のですが、どうすれば500件に合ったスクロールバーの大きさに変わる でしょうか?(Excel2000) 今のところその500件を新しいシートにコピーしなおして使ったりして いますが、何か良い方法があれば教えてください。

  • エクセルのスクロールバー

    3000行程度のエクセルシートを操作していたのですが、 いつもは右にあるスクロールバーが、 3000行の部分を最終行として対応していました。 ところが、1回操作をあやまってしまったようで、 現在は65535行目が最終行になってしまいました。 戻すやり方はありますか? つまり3000行以降の無データの部分に関して 右のスクロールバーを対応させないということです。 わかる方がいましたらお教えください。

  • スクロールバーの境界値は?

    C# AutoScrollPositionで表示させたすスクロールバーの境界値を取得する方法は? AutoScrollで自動でフォームにスクロールバーが表示されるようにしました。 上下方向のスクロールの上限(バーが一番上)下限(バーが一番下)値を取得するにはどうしたらいいでしょうか? バーが一番上になる時の値は、0ですよね? バーが一番下になる時の値は、どのようにして取得すればいいでしょうか? 指導よろしくお願いいたします

  • スクロールバーが動かない

    ワード2003のスクロールバーが動かなくなってしまいました。キーボードでの↑や↓、スクロールバー下の前のページ後ろのページボタンは動きます。どうしたらスクロールバーが動くようになるでしょうか?

  • スクロールバー

    現在HPを製作しています。 その過程で出た問題なのですが何かヒントになるような情報があれば教えていただければと思い、質問します。 HPの型としては、フレームを使って上下に分割されたものです。 起こった問題の現象としては ・下フレームで縦にスクロールバーが発生した時に、(おそらくスクロールバーの幅分)横スクロールバーが出現してしまいます。 ・こうして発生した横スクロールバーはブラウザの横幅を広げても消えません。 ・縦スクロールバーが消えると同時に消えます。 どうにかして縦のスクロールバーが出ても横は出ないようにしたいのですが、現在ヒントとなるものがなく闇雲に原因を探している状態です。 もしこのような現象に対してヒントのようなものをお持ちの方がいましたら。 知恵を貸していただきたいと思います。 よろしくお願いします。

  • スクロールバーの表示について

    お世話になります。 フォームやフレームにスクロールバーを表示させたいのですがScrollBarsプロパティやKeepScrollBarsVisibleプロパティに値を設定してもレールの部分だけ表示されてバーが表示されません。 というのもフォームやフレームの中にたくさんコントロールを置きたいのですがフォームやフレームの中に納まらないためスクロールバーでスクロールして納まらない部分も表示できるようにしたいと思っています。 フォームやフレームの中をスクロールするにはどうすればよいのでしょうか(テキストボックスではバーが表示されスクロールできます)。 よろしくお願い致します。

  • スクロールバーが消えました

    メールソフトBeckyを使用しています。2-3日前からメール受信欄からスクロールバーが表示されなくなりました。本文欄は表示されます。 解決方法(スクロールバーの表示)を教えてください。

  • スクロールバーを変えたい

    「gooの簡単ホームページ」でスクロールバーを変えようと思い、ソースをコピーして貼り付けましたが表示されません。(分からないのでメインやメニューのところに貼ってみました) ソースはホームページビルダーなどで試したら上手く表示されたので間違いないと思います。 貼り付ける場所(メニュー・メインなど)とその位置と 方法などありましたら教えてください。 よろしくお願いします。

  • スクロールバー表示

    HP作成でウィンドウが小さくなった時スクロールバーが出るようにするにはどうすれば良いのでしょう? 今はスクロールバーが表示されずに、小さなウィンドウで無理やり表示するのでレイアウトが崩れてしまいます。

  • スクロールバーが薄いです。

    何度も更新をしていたHPをwindowsで表示してみたら、 縦のスクロールバーが薄くなってしまいました。 MACだと通常通り表示されます。 スクロールバーは消えたわけではなく、 薄く表示されている状態です。 今まではwindowsでも表示できていたのですが…。 薄い矢印みたいなものがあるので、それで下方への移動は可能ですが、原因が分かりません。 Dreamweaver4で作業しています。 訳の分からない質問で申し訳ありませんが、 よろしくお願いします。

専門家に質問してみよう