Ameba Ownd

アプリで簡単、無料ホームページ作成

EXCEL VBA トグルボタン、リストボックスの使い方とIntegralHeight対策の一例

2018.02.12 13:13

EXCEL Ver 2016(32ビット)で確認。

フォームにトグルボタン、ラベル、リストボックスを配置。(イメージ:左)

UserForm1のコード

Private Sub ToggleButton1_Click()
   'イベントが有効な場合、myToggle関数を呼び出す。
   If Application.EnableEvents Then myToggle (1)
End Sub


Private Sub ToggleButton2_Click()
   If Application.EnableEvents Then myToggle (2)
End Sub


Private Sub ToggleButton3_Click()

   If Application.EnableEvents Then myToggle (3)

End Sub


Private Sub myToggle(num As Integer)

   'イベントを一時的に無効にする。

   Application.EnableEvents = False

   'トグルボタンを押していない状態にする。

   ToggleButton1.Value = 0

   ToggleButton2.Value = 0

   ToggleButton3.Value = 0

   If num = 1 Then

      ToggleButton1.Value = 1

   ElseIf num = 2 Then

      ToggleButton2.Value = 1

   Else

   ToggleButton3.Value = 1

   End If

   Application.EnableEvents = True

   'リストボックスにアイテムを表示する関数。

   list_items (num)

   'ラベルにリストボックスの高さを表示する。

   Label1.Caption = CStr(ListBox1.Height)

End Sub


Private Sub list_items(num As Integer)

   Dim str As String

   'トグルボタンにより、表示するデータを変える。

   If num = 1 Then

      str = "sheet1!A2:E51"

   ElseIf num = 2 Then

      str = "sheet1!G2:K51"

   Else

      str = "sheet1!M2:Q51"

   End If


   With ListBox1

      '項目を5列にする。

      .ColumnCount = 5

      '項目のサイズを指定する。

      .ColumnWidths = "20;30;30;30;30"

      '項目に見出しを表示する。

      .ColumnHeads = True

      'データを指定する。

      .RowSource = str

   End With

End Sub

sheet1のデータ(サンプル)

A~E列(51行まで連番)
ID コード 種類 個数 コメント
1 100100 果物 10 なし

2 100101 果物 11 なし


G~K列(51行まで連番)
ID コード 種類 個数 コメント
1 200100 野菜 60 なし
2 200101 野菜 61 なし


M~Q列(51行まで連番)

ID コード 種類 個数 コメント

1 300100 魚 110 なし

2 300101 魚 111 なし

対策は、

Height=330.5(下のイメージ:左)

Height=82.65(下のイメージ:右)

※作成時と閲覧時で環境が違う場合、再調整が必要かもしれない。