您是否知道是否可以在Excel中创建表单,用户可以在其中选择他/她需要显示的列?
例如,我有一个非常宽的excel文件(超过100列)。
一旦我需要打开某些列(例如A,B,E,H,O)而另一些时间打开其他列(例如C,E,H,J)。
我认为选择指定列的表单在处理具有较大人群的文件时会更加用户友好,但我从未在Excel中创建过。
你知道如何从这件事开始吗?而且,首先,Excel可以做这样的表格吗?
答案 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