【发布时间】:2017-10-23 15:53:11
【问题描述】:
我在 Sheet1 的“A”列中有动态行,这些行填充在列表框选择表单上。
111
222
333
444
....
现在在我的 Sheet2 上,我将 B2 行上的这些数据转换为:
111 | 222 | 333 | 444 | ...
我想为列表框中的任何项目选择,代码隐藏对应的列。如果我在列表框中选择 111 和 333,它会隐藏整个列“A”和“C”。 希望它有意义。 OK 按钮应该运行代码。
Private Sub cmdOK_Click()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim i As Integer, hdn2 As String
Dim hdn3 As Variant, col As Long, header As Range
Set sh2 = ActiveWorkbook.Sheets("Sheet2")
Set header = sh2.Range("2:2")
For i = 0 To Me.lstMultiChoice.ListCount - 1
col = Application.WorksheetFunction.Match(lstMultiChoice.List(i, 0), header, 0)
If Me.lstMultiChoice.Selected(i) = True Then
sh2.Columns(col).Hidden = False
hdn2 = hdn2 & lstMultiChoice.List(i, 0) & ","
Else
sh2.Columns(col).Hidden = True
End If
Next
Set sh1 = ActiveWorkbook.Sheets("List Data")
hdn3 = Split(Left(hnd2, Len(hdn2) - 1), ",")
sh2.Range(sh2.Cells(4, 4), sh2.Cells(4 + UBound(hdn3), 4)).Value = Application.Transpose(hdn3)
End Sub
【问题讨论】: