|
本帖最后由 frankyzhe 于 2013-4-23 10:39 编辑
求教各位前辈,
问题:如何 自动隐藏 A2到A21中为空值的行和 C1到G1中为空值的列,并自动更新 显示 被隐藏的行和列中被改值后不为空值的行和列?
如下是我编写的 最新版 代码,目前功能【奇次触发A表单元格 隐/显 判断,偶次触发 整体恢复】
缺陷1: 不能 在 判断 A1 是否 改值 后, 触发功能
缺陷2: 还是之前的速度慢的问题: 显示判断时,当被隐藏的行 的来源数据源 更新数据后,需要被显示出来时,怎样才能不用从表头重新判断?
{细化问题: 1.如何判断 被改值的单元格 行号(x)? 2.如何判断 被隐藏的行 的行号 (y)?
3.如何 当 X=Y 时,使 满足条件的行 取消隐藏?}
希望哪位高手帮我 改一下代码,谢谢- Public k
- Private Sub Worksheet_SelectionChange(ByVal Target As Range)
- Application.ScreenUpdating = False
- If Target.Count <> 1 Then Exit Sub
- If Target.Column <> 1 Then Exit Sub
- If Target.Row <> 1 Then Exit Sub
- Call 隐显恢复
- Cells(1, 2).Select
- Application.ScreenUpdating = True
- End Sub
- Sub 隐显恢复()
- k = k + 1
- If k > 10 Then
- k = 1
- Call 行列隐藏显示
- Else
- If k Mod 2 = 1 Then
- Call 行列隐藏显示
- Else
- Call 恢复初始
- End If
- End If
- End Sub
- Sub 行列隐藏显示()
- Dim i As Integer
- Dim j As Integer
- For i = 2 To 21
- If Cells(i, 1).Value = "" Then
- Cells(i, 1).EntireRow.Hidden = True
- Else
- Cells(i, 1).EntireRow.Hidden = False
- End If
- Next i
- For j = 3 To 7
- If Cells(1, j).Value = "" Then
- Cells(1, j).EntireColumn.Hidden = True
- Else
- Cells(1, j).EntireColumn.Hidden = False
- End If
- Next j
- End Sub
- Sub 恢复初始()
- Dim i As Integer
- Dim j As Integer
- For i = 3 To 7
- Cells(1, i).Select
- Selection.EntireColumn.Hidden = False
- Next i
- For j = 2 To 21
- Cells(j, 1).Select
- Selection.EntireRow.Hidden = False
- Next j
- End Sub
复制代码- Public arr(1 To 1, 1 To 1)
- Sub 集成功能()
- <span style="line-height: 1.5;">End Sub</span>
复制代码 |
|