0

Excel 2007 のユーザーフォームにリストボックスがあります。

ワークシートの一部のセルには、10 行を超える行 (ALT ENTER を含むデータ) が含まれています。

データをきれいにして表示しようとしています。列幅を 1000 に変更したくありませんが、マウスオーバー ボックスを使用してすべてのセル データを表示したいと考えています。

うまくいく別のアイデアはありますか?

4

1 に答える 1

1

マウスオーバーで可能ですが、複雑だと思います。ここで、もう 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

ここに画像の説明を入力

于 2013-03-08T19:01:39.970 に答える