質問: ExcelのVBAのフォーム画面にてデータを扱います フォームにフレームAを配置し、フレームAをスクロールさせるのは可能でしょうか? フレーム内にたくさんのラベル等を配置し、フレームのサイズからはみ出してしまう部分に関しては、フレームのサイズを変更せずに、スクロールバーを使用して表示できるようにしたいと考えています。 ネットである程度検索しましたが、最適な結果が見つかりませんでした。
回答: 少々面倒ですが、可能と思います。 コードを全部書くと大変なことになりそうなので、基本的な構成を書いておきます。 まずフレームを2つ用意します。 ひとつはフォーム上に配置するもの(以下、フレームA) もうひとつはフレームA内に配置するもの(以下、フレームA’) ■フレームA 通常通り、フォームに配置してください。 その際、スクロールバーのプロパティを設定します。 `ScrollBars`を`fmScrollBarsBoth`としてください。 (縦方向か横方向のみで良ければ適宜変更してください) その他、`ScrollHeight` `ScrollWidth`などを設定します(フレームA'のサイズで良いでしょう) ■フレームA' フレームA内に作りますが、大きさの関係上、最初はフレームAの外で編集した方がやりやすいでしょう。 質問にあるようにラベルなどを配置します。 フレームの大きさは、A<A'となります。 いくつかのプロパティを変更して、枠などを見えなくします。 `BorderStyle`に`fmBorderStyleNone` `SpecialEffect`に`fmSpecialEffectFlag` デザインが完了したらフレームA'を切り取って、フレームA内に貼り付けます。 あとはフレームAのScrollイベントに連動してフレームA'の`Top` `Left`を操作してあげれば良いと思います。 基本的な考え方はこんな感じと思います。 もちろん見栄え良く作るには色々調整が必要です。