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 SubPrivate 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 なし
- リストボックスのIntegralHeightが有効になっていると、トグルボタンを押すたびにリストボックスが小さくなる。
- IntegralHeightを無効にすると、リストボックスの一番最後のデータがうまく表示されない。
対策は、
- トグルボタンを何度押しても小さくならない値をHeightに設定する。
- 上の値の倍数だと近い数字になる。
Height=330.5(下のイメージ:左)
Height=82.65(下のイメージ:右)
※作成時と閲覧時で環境が違う場合、再調整が必要かもしれない。
0コメント