• ベストアンサー

ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)

お世話になります。 エクセルで、上下に長いのでスクロールさせて使うユーザーフォームを作成しています。 このユーザーフォームが、ホイールでスクロールできないので、できるようにしたいのですがどうしたら良いでしょうか? フリーソフトはインストールできない環境ですので、できればVBAで行いたいのですが方法はありますでしょうか。 よろしくお願いします。

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

こんにちは。KenKen_SP です。 >ホイールでスクロールできないので、できるようにしたいのですが >どうしたら良いでしょうか? VBA のユーザーフォームはコントロールを含めてマウスホイールには 対応していません。 したがって、フリーソフトを使うか、どうしても Excel 単体で実現し ようと思えば、下記のような方法をとることになります。 簡単に方法を説明すると、、、 ユーザーフォームをサブクラス化して、WM_MOUSEWHEEL メッセージを をフックします。そして、コールバックプロシージャ内で wParam 値 を使ってユーザーフォームの ScrollTop プロパティーを操作します。 ただ、、 この方法は、OS の発するメッセージを横取り(フック)して、そこに 独自の処理を挟み込むわけですから、制御の仕方を間違えると最悪 OS ごとハングアップしかねません。 難易度は高いのですが、ご希望があれば、サンプルコードを書きます。 どうでしょうか?

double12345
質問者

お礼

ご回答ありがとうございます。 お礼が遅くなりましてすみません。 ユーザーの方にアンケートしたところ、何か別の方策をたてる方がいいということでしたので、また代案を考えることになりました。 とても難しいということが分かって勉強になりました。 どうもありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ユーザフォームのスクロールについて

    VBAの質問になります。 複数のフレームを順次並べ、縦長となったユーザフォームが存在します。 例えば、そのユーザフォームにスクロールバーを設置し、先頭のヘッダ部分だけ残し、それ以下のユーザーフォーム全体をスクロールしながら参照したいと思っています。 そのようなことはできるのでしょうか。 (縦長のユーザーフォームは、フレーム数に左右されるため可変なんです)

  • エクセルのユーザーフォームのスクロールについて

    現在、エクセルのユーザーフォームを作成中ですが、 ユーザーフォームに下記のようにコードを書き込み スクロールをさせていますが、 Private Sub UserForm_Initialize()    Me.Height = ActiveWindow.Height  Me.ScrollBars = fmScrollBarsBoth  Me.ScrollHeight = 655 End Sub  このユーザーフォームにマルチページを使用しているせいか、 ユーザーフォームを呼び出す際に、マルチページのトップ位置から スクロールのカーソルの位置が指定されてしまい、 ユーザーフォームのマルチページより上部がスクロールしないと 絶えず見えないようになってしまっている状況です。  ユーザーフォームを呼び出す際に、このユーザーフォームの 上部(一番上)からスクロールのカーソルが設定できるようにするには どのようにすればよいか教えて頂きますでしょうか? よろしくお願いいたします。

  • エクセルVBAのユーザーフォーム

    いつもお世話になります。 エクセルVBAのユーザーフォームを印刷することは出来るのでしょうか?。可能であればやり方を教えてください。 宜しくお願いします。

  • VBA ユーザーフォームを速く開く方法について

    VBA ユーザーフォームを速く開く方法について 現在Excel2000を使用しています。 VBAにてユーザーフォーム1と2を作成して、ユーザーフォーム1のコマンドボタンを押すと userform2.showが実行されてユーザーフォーム2が開きますが、フォーム2にはテキスト ボックスなどが約400個程設置してあり、そのせいかフォーム2が開くのに約8~10秒程かかり ます。 そこでそのフォームを速く開きたいのですが、(1秒~2秒程で)どうしたら速く開くでしょうか? Application.DisplayFullScreen = Falseなどを使用しても余り効果がありません。 パソコン自体の処理速度もあると思いますが、できるだけ速くしたいです。 よろしくお願いします。

  • ユーザーフォームのスクロールについて(エクセル2000VBA)

    お世話になります。 上下に長いユーザーフォームを作成し、スクロールして使っています。 1~4まで項目があり、ボタンをクリックするとその項目の先頭まで自動的にスクロールするような仕組みを作りたいのですがどうしたらよいでしょうか? Private Sub CommandButton1_Click()  TextBox1.SetFocus  '項目の先頭にあるテキストボックスに移動する End Sub という風なコードはできたのですが、ボタンの位置よりテキストボックスが下にあると、フォーカスしたテキストボックスがユーザーフォームの一番下に表示されてしまいます。 また、上方向にいく時も、テキストボックスの1行上に配置してあるタイトル(ラベルで作成しました)が表示されないので少し不便な気がします。 例えば、FAQサイトによくあるような、目次をクリックするとその項目が一番上に表示され、「Top」をクリックしてページ先頭にジャンプするような感じにしたいのですが…。 よろしくお願いします。

  • エクセルのユーザーフォームについて

    エクセルのユーザーフォームについて教えてください。 ユーザーフォームにてメニュー画面を作成しました。 ユーザーはメニューからの操作だけでエクセルシートを作成できるようなマクロをつくりました。 ユーザーフォームのコマンドボタンでEXCELを終了させることはできますか? VBAの記述方法も教えてください。

  • Excel2003VBA「ユーザーフォーム」

    お世話になります。 今、ユーザーフォームを作成中なのですが まず フォームを先に作成しました。 この後で それぞれの項目にコードを入れていけばよいのかな?と思って先に入れ物だけ作ったのですが 手順としは こういった感じで良いのでしょうか? ちなみにExcelのシートには直接入力出来ないようにして、フォームに入力させる為に まず一旦リストを非表示にしてボタンのみ(「フォームを表示ボタン」)表示をし、 フォームの入力に従ってリストに反映させたいのですが、勉強し始めの自分にはハードルが高過ぎるでしょうか? 作成したフォームは添付の通りです。 ご感想、その他 ご教示いただける内容等々、宜しくお願い致します。

  • VBA シート毎にユーザーフォームを作成する方法

    VBAの初心者です。記載内容に不備があるかもしれませんが、ご了承下さいませ。 エクセルのシート毎に異なったデータを簡単に入力したいと思っています。それをVBAを使って作成したいのですが、シート毎のユーザーフォーム作成方法(オブジェクトのWorksheetやモジュールの記載内容など)がわかりません。一つのシートに対しては、なんとかユーザーフォームを作成でき、データ集計できています。 ネットで検索しても、思い通りのサイトが見つかりませんでしたので、質問させていただきます。 教えて下さい。宜しく御願い致します。

  • Accessフォームで画面をスクロールさせるには?

    現在Access2003を使ってデータベースを作成中です。 フォームで項目を入力してもらうようにと思っているですが、入力項目数が多く、画面に入りきらないので、マウスホイールで画面を上下にスクロールさせたいと考えています。 通常、フォーム上でマウスホイールを使うと次のレコードに移動してしまうので、そこでのミスをなくすために、さしあたって現在はマウスホイール操作を無効にはしています。 もしも、マウスホイールで画面をスクロールさせることができれば、その方法を採用したいと考えています。 どうぞよろしくお願いいたします。

  • EXCEL VBA ユーザーフォームで

    EXCEL VBA のユーザーフォーム上でエクスプローラバーのフォルダ 風なメニューバーを作成したいと思っているもですが、さっぱり分 からないので、教えて下さい。 お願いします。

専門家に質問してみよう