【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?

シート上に配置したボタンが、マウスでスクロールすると画面と共に移動し、画面表示から外れてしまいます。
この状態を、マウスで行を多く送ってもボタンは常に画面上の同じ位置にあるようにしたいのです。
コントロールの書式設定のプロパティのチェック変更では対応出来ないようです。
どなたかご存知の方、対処法をご教授ぐださいませ。よろしくお願いします。

  • 画像を添付する (ファイルサイズ:10MB以内、ファイル形式:JPG/GIF/PNG)
  • 今の自分の気分スタンプを選ぼう!
あと4000文字

A 回答 (2件)

こんばんは



「ボタン」をどの様なオブジェクトとして作成しているのか不明ですけれど・・

位置を「画面左上から○○ポイント」のように常に指定するようにしておけばよさそうに思われます。

VBAからボタンの位置を指定することは比較的簡単にできます。
例えば、縦方向であれば、
 ボタンオブジェクト.Top = Rows(ActiveWindow.ScrollRow).Top + 100
みたいな要領で可能です。

一方で、VBAには画面のスクロールイベントは無いので、スクロールの発生を直接とらえることができません。
対処方法としては、スクロールが発生する元となる操作の各種イベントを捉えて、処理する方法が考えられますが、けっこう面倒そうですね。
スクロールが発生するのは、スクロールバーの操作だけでなく、TabやEnter、矢印キーによる移動、マウスホィールの操作あるいは名前ボックスにセル位置を入力して直接ジャンプするなどなどいろいろありますので。

別法として、VBAで画面左上のセルの変化を常時監視するという方法も考えられます。
こちらの方法であれば、ロジックは比較的シンプルなものにできますが、レスポンスを良くしようとすると監視間隔を縮める必要があり、負荷になり易いという欠点が考えられます。


一番簡単のは「ウィンドウ枠の固定」を利用して、常に表示されるセル範囲を作っておき、その中にボタンを配置しておくことだと思います。
位置は左上などに限定されてしまいますけれど、この方法であれば、設定をしさえすればそのままで実現可能です。
    • good
    • 0

表示する必要のない行をグループ化すればいいのでは?


グループは幾つでも作れるようです。
後は、表示か非表示にするは、+−で調整できます。

https://www.pc-koubou.jp/magazine/39052
    • good
    • 0

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


おすすめ情報