|
▼困っているヒト さん、皆さん、こんばんは。
>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プロパティを大きく設定し、
コントロール配置後、見せたいコントロールの最後の位置に合わせて設定すれば
よいと思いますが・・・・。
確認して下さい。
|
|