显示以Excel格式选择的列

时间:2017-02-06 15:50:08

标签: excel forms vba excel-vba

您是否知道是否可以在Excel中创建表单,用户可以在其中选择他/她需要显示的列?

例如,我有一个非常宽的excel文件(超过100列)。

一旦我需要打开某些列(例如A,B,E,H,O)而另一些时间打开其他列(例如C,E,H,J)。

我认为选择指定列的表单在处理具有较大人群的文件时会更加用户友好,但我从未在Excel中创建过。

你知道如何从这件事开始吗?而且,首先,Excel可以做这样的表格吗?

1 个答案:

答案 0 :(得分:0)

已修改以正确处理评论中的最后OP请求

您可以在每次相关的表单激活时添加UserForm

添加UserForm(名为UserForm1),其中包含一个ListBox(ListBox1)和一个按钮(CommandButton1

ListBox1 MultiSelect属性设置为fmMultiSelectMulti

然后将此代码添加到UserForm1代码窗格:

Option Explicit

Private Sub CommandButton1_Click()
    Dim i As Long

    With Me.ListBox1
        If .ListCount > 0 Then
            ActiveSheet.UsedRange.EntireColumn.Hidden = True
            For i = 0 To .ListCount - 1
                If .Selected(i) Then Columns(.List(i, 0)).Hidden = False
            Next
            ActiveSheet.UsedRange.Columns(1).Select
        End If
    End With
    Me.Hide
End Sub

Private Sub UserForm_Initialize()
    Dim col As Range
    Dim iCol As Long

    With ActiveSheet
        ReDim Data(1 To .UsedRange.Columns.Count, 1 To 2)
        For Each col In .UsedRange.Columns
            iCol = iCol + 1
            Data(iCol, 1) = Split(col.Address(, False), "$")(0)
            Data(iCol, 2) = .Cells(2, col.Column).Value
        Next
    End With
    With Me.ListBox1
        .ColumnCount = 2
        .ColumnWidths = "0;30"
        .List = Data
    End With
End Sub

然后将此代码添加到工作表代码窗格

Private Sub Worksheet_Activate()
    With UserForm1
        .Show
    End With
    Unload UserForm1
End Sub