| 
    
     |  | ▼困っているヒト さん、皆さん、こんばんは。 
 
 >1.フォーム(VBA)とスクロールバーのプロパテイを次ぎのとおり設定しました。
 >  Height=999.75 (1000にしたら自動的にこのようになりました)
 >  Width=801
 >  keepscrollsbarvisbl=3
 >  scrollbars=3
 >  scrollHight=1200
 >  scrollWidth==802.25
 >2. 縦のスクロールが上手く行かないので  scrollHight=1200 を 1500にした
 >  ところフォーム全体は見えましたが多き過ぎました。
 >
 >3.ということでフォームとスクロールバーの調整の仕方についてご教示いただければ
 >  幸いです。 ご多忙かと思いますがよろしく願います。
 
 ユーザーフォームには、複数のコントロールが配置されていますよね?
 ScrollHeightの値は、スクロールによって見せたいコントロール位置を基準に
 決めたらよいと思います。
 
 垂直スクロールのみの例ですが・・・。
 
 新規ブックにユーザーフォームを一つ作成して下さい(Userform1)。
 
 このフォームのモジュールに以下のコードを記述して下さい。
 '=======================================================
 Private Sub UserForm_Initialize()
 Dim h As Single
 Dim txt As MSForms.TextBox
 h = 20
 For idx = 1 To 100
 Set txt = Controls.Add("Forms.TextBox.1", "textbox" & idx, True)
 With txt
 .Top = idx * h
 .Left = 10
 .Width = 30
 .Height = h
 .Text = idx
 End With
 Next idx
 With Me
 .ScrollBars = fmScrollBarsVertical
 .ScrollHeight = 101 * h + 5
 End With
 End Sub
 
 次にこのフォームを表示するコードを標準モジュールに
 '====================================================
 sub test()
 userform1.show
 end sub
 
 として、実行してみて下さい。
 
 テキストボックスが100個作成されますよね!!
 100個目のテキストボックス、つまり、フォーム上、最後のテキストボックスの
 
 Topプロパティの値は、100*20=2000にコードで設定しています。
 このテキストボックスのHeightプロバティは、20
 
 よって、
 
 ScrollHeightプロパティには、2020にちょっとだけ余裕を持たせて
 101*20+5=2025に設定しました。
 
 これでコントロールが全部スクロールで表示可能になりますよね?
 
 動的に配置しましたが、静的配置でも同じです。
 
 最初は、コントロールを貼り付けるためにScrollHeightプロパティを大きく設定し、
 コントロール配置後、見せたいコントロールの最後の位置に合わせて設定すれば
 よいと思いますが・・・・。
 
 確認して下さい。
 
 |  |