プロが教えるわが家の防犯対策術!

エクセルでスピンボタンとスクロールバーについて
エクセル2000です。
フォームのスピンボタンとスクロールバーをワークシート上に配置した場合、両者ともほぼ同じ働きをしてくれます。
ところが、大きな違いが有ります。
スピンボタンは上向き▲で数値が大きくなっていきます。これは感覚的にしっくりきます。
ところが縦向きのスクロールバーは上向き▲で数値が逆に小さくなっていきます。これはちょっと違和感があります。
それなら、スピンボタンを使えばいいだけのことと言われそうですが、スピンボタンにはバーがないのでスライドさせて数値を動かすことができないのでスクロールバーを使いたいのです。
もちろん数式を用いて、セルの表示上でそうなるようにはできますが、それではリンク先セルに直接数値を入力ができなくなり不便です。
スクロールバーで上向き▲で数値が大きくなるような設定にはできないのでしょうか?

スクロールバーを縦ではなく横向きに配置すれば右スクロールで数値が増え、数直線と同じでしっくりくるのですが、レイアウトの都合で縦向きに配置したいのです。
わがままな質問ですみません。
よろしくお願いします。 (o。_。)oペコッ.

(なお、同じ質問を1時間ほど前に投稿したつもりだったのですが、なぜか反映されていないので再度質問いたしました。もし二重になっていたら申し訳ありません。)

A 回答 (2件)

マクロなら、こうなります。


こちらは、スクロールそのものには対応していません。理由は、イベントだから、クリックしている間は、マクロは停止されます。

(以下は、Max を100 と設定しています)

Sub スクロール1_Change()
  With ActiveSheet.ScrollBars(1)
   Range("B10").Value = .Max - .Value
  End With
End Sub

セルの表示なら、どこか見えない所に、LinkedCell(リスクするセル) を置いて、

見える場所にセルに、以下のように置けば、増減は逆になります。
 =100-A100 ←LinkedCell

もちろん、コントロールツールなら、SmallChangeプロパティを、-1 にすればよいはずでしたが、フォームは、負の数は設定できないようです。
    • good
    • 0
この回答へのお礼

Wendy02さま、いつもお世話になります。
マクロでの対処はANo1さんのアドバイスですでに試したのですが、フォームでなくActiveXコントロールのスクロールバーでマイナスの設定ができるとは思いませんでした。
で、試したところ、SmallChangeを、-1 にすると下向き三角をクリックするとバーが上へ移動、上向き三角だとバーが下へ移動と、逆になりますが、バーが上に行けばやはり数値は減少してしまうことに変わりありませんでした。
でも、マイナスが入力できるならひょっとして・・・と思い、SmallChangeは+1に戻し、Maxの値とMinの値を逆に入力してみました。
フォームでは最大値が最小値より小さい!とエラーになったこの方法が、ActiveXコントロールでは使えました!!
アドバイスありがとうございます。
解決しました。

お礼日時:2010/09/18 16:46

フォームのスクロールバー自体の設定だけではどうも無理っぽいです。


素直にマクロで対処してください。

仮にリンクするセルをA1として、これは作業用として非表示。
表示/入力用セルをB1とする、など、リンク先セルと表示セルを分ける。

スクロールバーにマクロを登録。
マクロ内容は、最大値からリンクセルA1を引いた値をB1にセットする。

それと、Worksheet_Changeイベントで、B1セルChange時に
最大値からB1を引いた値をA1にセットする。

スクロールバーのマクロにはApplication.EnableEventsの制御も必要です。
連続スクロール時のセル表示にちょっと違いが出ますが、そこは妥協も必要かと。
    • good
    • 0
この回答へのお礼

end-uさま、いつもありがとうございます。
マクロで対応することは考えていませんでしたが、やってみました。
たしかに、矢印をクリックした場合はそうなりますね。

ただ、おっしゃる通り、残念ながらスクロールバーをスライド中はセル表示がぜんぜん変わってくれませんね。
スライドを終えた瞬間に表示されるだけなので、どこでスライドをストップさせるのかを使う人が数値で認識できないのが大きな難点です。

妥協も必要ですね、今回はレイアウトを妥協して横向きにすることで対応することにします。
ありがとうございました。

お礼日時:2010/09/18 13:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!