Excel 2007 のユーザーフォームにリストボックスがあります。
ワークシートの一部のセルには、10 行を超える行 (ALT ENTER を含むデータ) が含まれています。
データをきれいにして表示しようとしています。列幅を 1000 に変更したくありませんが、マウスオーバー ボックスを使用してすべてのセル データを表示したいと考えています。
うまくいく別のアイデアはありますか?
マウスオーバーで可能ですが、複雑だと思います。ここで、もう 1 つの簡単なアイデアがあります。リスト ボックスをダブルクリックすると、選択したリスト アイテムのデータを含む複数行のテキスト ボックスが表示されます。このテキスト ボックスは、リスト ボックスと同じ位置とサイズです。ユーザー フォームのクリック テキスト ボックスが非表示になります。これをテストするには、"ListBox1" という名前のリスト ボックスを含むフォームが必要です。
Option Explicit
Public ListItemInfo As Control
Private Sub UserForm_Initialize()
Set ListItemInfo = Me.Controls.Add("Forms.TextBox.1", "ListItemInfo", False)
With Me.ListItemInfo
.Top = Me.ListBox1.Top
.Left = Me.ListBox1.Left
.Width = Me.ListBox1.Width
.Height = Me.ListBox1.Height
.MultiLine = True
End With
End Sub
Private Sub ListBox1_Change()
Me.ListItemInfo.text = GetSelectedItemsText
End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
SwitchListItemInfo
End Sub
Private Sub UserForm_Click()
SwitchListItemInfo
End Sub
Private Function GetSelectedItemsText() As String
Dim text As String
Dim i As Integer
For i = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(i) Then
text = text & Me.ListBox1.List(i) & vbNewLine
End If
Next i
GetSelectedItemsText = text
End Function
Private Sub SwitchListItemInfo()
If Me.ListItemInfo.text = "" Then Exit Sub
Me.ListItemInfo.Visible = Not Me.ListItemInfo.Visible
Me.ListBox1.Visible = Not Me.ListBox1.Visible
End Sub