Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
同サイズの2つのListBoxだがHeightが違って表示される
投稿日時: 23/11/25 18:12:21
投稿者: taichi

ListBox1,ListBox2 ともにTop,Width,Height は同じ
Font名、Fontサイズも同じ、Listも同じです。
但し、ListBox1選択後は、ListBox2.RemoveItem ListBox1.ListIndex します。
Item数は縦ScrollBarが表示される数です。
 
UserFormが表示されると、左右ListBox1のHeightが違って表示され不細工です。
解決策をご教授ください。
 

回答
投稿日時: 23/11/25 22:19:44
投稿者: WinArrow

引用:
Item数は縦ScrollBarが表示される数です。

↑が、理解できません。
具体的に説明できますか?
 
ステップ実行で挙動を確認していますか?

投稿日時: 23/11/26 06:54:47
投稿者: taichi

表現がまずくて申し訳ございません。
 
Item数で多くてListBox内に収まりきれないので、
自動的に縦ScrollBarが表示される状態です。

回答
投稿日時: 23/11/26 10:31:02
投稿者: WinArrow

回答ありがとうございました。
 
リストボックのプロパティの中に
IntegralHeight
があります。
 
このプロパティの設定に関係しているかもしれません。(外しているかも?)
確認してみてください。

回答
投稿日時: 23/11/26 14:40:31
投稿者: simple

メモを書いておきます。
 
■事象再現コード
下記のコードを実行すると、ListBox1とListBox2の高さが合いません。
UserForm1.Showを実行するたびに、ListBox1が高かったり、ListBox2が高かったり、で安定しません。

Private Sub UserForm_Initialize()
    ListBox1.Height = 38.95
    ListBox2.Height = 38.95
'    ListBox1.Height = 80#
'    ListBox2.Height = 80#
    With ListBox1
        .AddItem "a"
        .AddItem "b"
        .AddItem "c"
        .AddItem "d"
        .AddItem "e"
        .AddItem "f"
    End With
    With ListBox2
        .AddItem "a"
        .AddItem "b"
        .AddItem "c"
        .AddItem "d"
        .AddItem "e"
        .AddItem "f"
    End With
End Sub
(なお、その他のプロパティは既定値とします。)
 
■想像される原因
    ListBox1とListBox2ともに同じ環境であるにも拘わらず、高さの表示が異なるのは
    説明がつかず、原因は不明です。(小数点誤差等を背景にしたバグではないかと想像します)
 
■対応策
(1) .IntegralHeight = False とします。(既にご指摘がありました)
    ListBox1.IntegralHeight = False
    ListBox2.IntegralHeight = False

Help さんの引用:
 True リストは自動的にサイズを変更して完全な項目だけを表示します (既定値)。
 False 項目が大きすぎて完全に表示されない場合でも、リストは自動的にサイズを変更しません。

    (Heightの設定によっては、行の一部しか表示されないことも起きえます。要調整です。)
もしくは、
(2)項目がすべて収まるように十分な高さをとることです。(例:Height = 80)
   異常事象は起きません。(サイズの自動計算が行われないため。)

回答
投稿日時: 23/11/27 11:24:40
投稿者: WinArrow

引用:

■想像される原因
    ListBox1とListBox2ともに同じ環境であるにも拘わらず、高さの表示が異なるのは
    説明がつかず、原因は不明です。(小数点誤差等を背景にしたバグではないかと想像します)

↑について、
「フォントサイズとリストボックスの高さの関係」に焦点にして、テストしてみました。
 
フォントサイズとリストボックスの高さの関係
リストボックス内の行間は
・フォントによって異なるようです。(プロポーショナルと等倍フォントの違いを含む)
 
 

回答
投稿日時: 23/11/27 13:38:29
投稿者: simple

ご指摘のとおりです。私の場合は以下の状態で再現しました。
・MS UI Gothic(フォント名)
・標準(スタイル)
・9ポイント(サイズ)
(Excel2019,Win10です)
# 最低限、質問者さんのところでは発生している事象と、同じことかと思います。

投稿日時: 23/11/27 23:15:29
投稿者: taichi

WinArrowさん simpleさん いつもながら回答ありがとうございます。
 
IntegralHeight を両方とも False にすると高さがそろいました。