Forms 以Excel格式显示所选列

Forms 以Excel格式显示所选列,forms,vba,excel,Forms,Vba,Excel,您知道是否可以在Excel中创建一个表单,用户可以在其中选择需要显示的列 例如,我有一个非常广泛的excel文件(超过100列) 一次我只需要打开某些列(例如A、B、e、H、O),另一次打开其他列(例如C、e、H、J) 我认为,当与更多的人一起处理文件时,选择指定列的表单会更方便用户,但我从未在Excel中创建过一个表单 你知道怎么从这件事开始吗?首先,是否可以在Excel中创建这样一个表单?编辑以正确处理上一个OP在评论中的请求 您可以添加一个UserForm,以便在每次相关工作表激活时启动

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

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

一次我只需要打开某些列(例如A、B、e、H、O),另一次打开其他列(例如C、e、H、J)

我认为,当与更多的人一起处理文件时,选择指定列的表单会更方便用户,但我从未在Excel中创建过一个表单


你知道怎么从这件事开始吗?首先,是否可以在Excel中创建这样一个表单?

编辑以正确处理上一个OP在评论中的请求

您可以添加一个
UserForm
,以便在每次相关工作表激活时启动

添加一个带有一个列表框(
ListBox1
)和一个按钮(
CommandButton1
)的
UserForm
(称为
UserForm1

ListBox1
MultiSelect
属性设置为
fmmultiselectmuli

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

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

一切皆有可能!首先,我要为自定义复选框和标签创建一个类,以便在运行时添加到UF中,剩下的应该很简单!;)嗨,这是可能的,但真的有必要吗?你就不能多出几张纸,为不同的用户显示不同的输出吗?非常感谢,它的工作原理和我需要的完全一样。还有一个问题-列表框中的列被命名为A、B、C、D等。您知道如何从第二行的单元格值中命名它们吗?不客气。请参阅编辑后的答案,了解第2行的值。是否可以再次检查代码?在更改后运行代码时,出现“运行时错误'13'类型不匹配”错误消息。谢谢你看编辑的代码。您必须1)用两列设置列表框2)并用工作表列索引填充第一列,用相应的第二行内容填充第二列3)在按钮处隐藏第一列(
ColumnWidth=0
)4)单击使用列表框第一列内容检索要隐藏索引的列