EXCEL用VBA,按要求显示我要的行

按要求,我点击筒体那筒体那一大行整体显示,可以选择多个行
做这个界面,我要的效果是我选筒体就出现筒体,我都选都出现,随便我选

其实改为隐藏跟显示交替出现而不用弹出窗体也行。
需要隐藏时点击第一列对应行,需要显示时点击除第一列以外的其他列,2003测试通过,代码如下:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count = 256 Then Exit Sub
Application.ScreenUpdating = False
If Target.Row = 2 Then
If Rows(65536).Hidden = True Then
Rows(Target.Row + Target.Rows.Count & ":65536").EntireRow.Hidden = True
Else
If Target.Column = 1 Then
Rows(Target.Row + Target.Rows.Count & ":65536").EntireRow.Hidden = True
End If
End If
Else
If Rows(65536).Hidden = True Then
Cells.EntireRow.Hidden = False
Else
If Target.Column = 1 Then
Rows("2:" & Target.Row - 1).EntireRow.Hidden = True
Rows(Target.Row + Target.Rows.Count & ":65536").EntireRow.Hidden = True
End If
End If
End If
Application.ScreenUpdating = True
End Sub追问

发个附件我看看

追答

附件已上传,请下载来看。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-03
思路:
鉴于Checkbox这种控件是单一固定的,不便于动态显示、修改,所以建议改用ListBox控件,将需要用于筛选的数据保存在某张辅助工作表中,链接到控件,并且将控件的MultiSelect属性设置为1(按空格键或单击鼠标以选定列表中一个条目或取消选定)。然后可以通过遍历ListBox控件的Items.Selected这个属性来获得用户的选择。
得到了用户选择的条件以后,就可将对应的数据作为自动筛选的条件,执行自动筛选代码即可。
问题是,自动筛选只能最多显示3个条件,3个以上的情况就无法实现了。
因此,如果题主只需要每次显示单一条件,则ListBox控件的MultiSelect属性可以改为0(不允许多选)。如果需要显示多于3个的条件,就只能用For...Next循环遍历整个数据表,将未被选中的数据整行隐藏。本回答被提问者和网友采纳
第2个回答  2014-03-03
就一个简单的选择多行吗?不用窗体也行呀!追问

我就是要求我选择的出现,没选择的自动隐藏

追答

以下代码能满足要求。详见附件(在前面增加一选择行,需要选择的写在和各单元格内)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

   Dim Ro&, Ra As Range

   If Target.Row = 1 And Len(Target) > 1 Then

      Ro = UsedRange.Rows.Count

      Set Ra = Range("A2:A" & Ro).Find(Target)

      Rows("3:" & Ro).Hidden = True

      If Not Ra Is Nothing Then Ra.MergeArea.EntireRow.Hidden = False

   End If

End Sub

单击第一行的条目即可

追问

哥,我就想要有提示框的,可以给我不同的组合,我选择好选项,确定就出现我要的那几项。

相似回答