[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『リストボックスの高さを固定するには?』(カシスソーダ)
こんばんは、よろしくお願いいたします。 ユーザーフォームのリストボックスについての質問です。
リストボックスのリストの行を削除したり行を追加したりしたら リストボックスの高さが変わってしまうという現象がおきています。
↓はリストボックスに格納したリストの各行の各列のデータを左右逆に入替えるものです。 今回の質問はこのコードについてではなくリストボックスの高さが変わってしまうことに ついての対処方法です。
ユーザーフォームにコマンドボタン一つとリストボックスを一つ配置しておきコマンド ボタンをクリックしたらリストボックスのデータが左右入れ替わります。 このコマンドボタンをクリックしてリストボックスのデータが入れ替わったときにリスト ボックスの高さが変わってしまいます。 リストボックスの幅によっては高さが増えていくときもあれば逆に減っていくときもあり ます。ユーザーフォームの下端より下へリストボックスの高さが増えていくときもあります。
プロパティのListStyleをfmListStyleOptionにしたら高さが変わらなくなります。 通常はfmListStylePlainにして使っています。
リストボックスの高さを変えないようにするにはどうすればいいでしょうか? 何か設定があるのでしょうか? ご存知の方、ご教示お願いいたします。
Private Sub CommandButton1_Click() Dim retunum As Integer '列数 retunum = 5 Call lbretuirekae(retunum) End Sub
'LB列入替えFunction Function lbretuirekae(ByVal retunum As Integer) Dim i As Integer Dim j As Integer Dim lstcnt As Long Dim lbary() As Variant Dim lbaryb() As Variant lst = Me.ListBox1.List lstcnt = Me.ListBox1.ListCount ReDim lbary(retunum - 1, Me.ListBox1.ListCount - 1) ReDim lbaryb(retunum - 1, Me.ListBox1.ListCount - 1) lbary = Me.ListBox1.Column For i = 0 To Me.ListBox1.ListCount - 1 For j = 0 To retunum - 1 lbaryb(j, i) = lbary(retunum - 1 - j, i) Next j Next i Me.ListBox1.Clear Me.ListBox1.Column = lbaryb Erase lbary Erase lbaryb End Function
'リストボックスデータ格納 Private Sub UserForm_Initialize() Dim i As Long For i = 1 To 1000 Me.ListBox1.AddItem i Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = i * 10 Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = i * 100 Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = i * 300 Me.ListBox1.List(Me.ListBox1.ListCount - 1, 4) = i * 500 Next i Me.ListBox1.ColumnCount = 5 End Sub
Windows:XP SP3 Excel:2002 です。よろしくお願いいたします。
IntegralHeight というプロパティを調べて見てください
ichinose
ichinoseさん、ご回答ありがとうございます。
>IntegralHeight
TrueになっていましたのでFalseにしたところ高さが 固定されました。 ありがとうございました。 (カシスソーダ)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.