プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。

ExcelのVBAを利用してマクロを作成しているのですが、ユーザフォームにリストボックスを設定し、任意の高さを調節したいと思っております。

ユーザフォームツールで、ユーザフォーム(UserForm1)を作成し、その中にリストボックス(ListBox1)を設定しました。

下記のコードはサンプルですが、なぜかリストボックスの高さが調整されないのです。。
コードが間違っているのでしょうか?
詳しい方、ご指導お願いします。。。

Private Sub UserForm_Initialize()
 With UserForm1.ListBox1
  .AddItem "テスト1"
  .AddItem "テスト2"
  .Height = 50
 End With

 'リストボックスの高さを表示する
 Msgbox UserFrom1.ListBox1.Height
End Sub

※Msgboxでは"50"と表示されず、ユーザフォームツールで設定した高さが表示されてしまいます。。

A 回答 (2件)

----------------------------


 With UserForm1.ListBox1
  .AddItem "テスト1"
  .AddItem "テスト2"
  .Height = 50
 End With
----------------------------

.Height=50を下記のように最初に持ってくれば出来ると思います

With UserForm1.ListBox1
.Height = 50
.AddItem "テスト1"
.AddItem "テスト2"
End With
    • good
    • 0
この回答へのお礼

takachan7272さん、早速ありがとうございます!
ご教授いただいたとおり、うまくいきました!
ただ、なぜ Heightを最初に持って行く必要があるのかいまいち理解できませんが…。
もしご存じでしたらお教えいただけますか?

とりあえずこの件について回答があるか待ってみますが、しばらくなければ質問を締め切ります。

お礼日時:2009/03/29 22:50

takachan7272です。


実は私も理由はわかりません。
コードを1行ずつ実行すると、調整されるんですけどね・・・

リスト(値)を設定せずに高さだけ調整させると、
これは問題なく処理されます。
リストを設定してからだとダメなんですよね。

例えば、質問に書かれたままのコードを Userform_Clockで実行すると
問題なく処理されます。
イベント発生や、そのタイミング等が絡んでいるのかもしれませんね。

何かモヤモヤ感が残ってしまいました。
私も正確な理由が知りたいです。
    • good
    • 0
この回答へのお礼

再度ありがとうございます!
なるほど…。
たしかにおっしゃるとおり、不可解な現象ですね。
リストボックスの高さの調整はうまくいかないのですが、ユーザフォーム自体の高さ調整であれば、なんの問題もなく動作するんですけどね…。

新たな回答が寄せられるのを待ってみましょう!

お礼日時:2009/03/30 23:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!