Loops 隐藏单元格上方的1行和下方的8行,该单元格根据另一张图纸中的拾取列表进行更改
我正在尝试自动化一个报告表单。从表1上的验证下拉列表中选择的文本值通过公式指定表9上的单元格是否具有在第一张表中输入的值或值的串联混合值 Sheet9基本上包含200个空白表,包括中间的行,每个表9行,我们关心的单元格给每个表一个标题,表示它们需要完成。任何没有标题的表都应该隐藏 我将一个范围命名为JanRange,它只是标题单元格,我希望循环到每个目标标题单元格,评估它是否显示值,如果没有,则隐藏从上面1行到下面8行的行块 我已经找遍了所有地方,但我尝试运行的任何东西似乎都不起作用。我想我遇到的主要问题是,根据Sheet9上的单元格,通过依赖于Sheet1更改的公式,运行Sheet9的代码 如果你需要我提供更多的细节,请直接询问 非常感谢, 扣篮 编辑: 因此,我现在获得了以下代码,它将成功隐藏我命名区域中每个标题单元格的行:Loops 隐藏单元格上方的1行和下方的8行,该单元格根据另一张图纸中的拾取列表进行更改,loops,excel,excel-2007,vba,Loops,Excel,Excel 2007,Vba,我正在尝试自动化一个报告表单。从表1上的验证下拉列表中选择的文本值通过公式指定表9上的单元格是否具有在第一张表中输入的值或值的串联混合值 Sheet9基本上包含200个空白表,包括中间的行,每个表9行,我们关心的单元格给每个表一个标题,表示它们需要完成。任何没有标题的表都应该隐藏 我将一个范围命名为JanRange,它只是标题单元格,我希望循环到每个目标标题单元格,评估它是否显示值,如果没有,则隐藏从上面1行到下面8行的行块 我已经找遍了所有地方,但我尝试运行的任何东西似乎都不起作用。我想我遇到
Sub Worksheet_Calculate()
Application.ScreenUpdating = False
Dim Cell As Range
For Each Cell In Range("TestRange")
If Cell.Value = "" Then
Cell.EntireRow.Hidden = True
Else: Cell.EntireRow.Hidden = False
End If
Next
Application.ScreenUpdating = True
End Sub
太棒了!但我需要将隐藏的内容扩展到上面1行和下面8行的九行块,而不仅仅是一行。有什么想法吗
编辑:
刚刚尝试了下面的代码,但出现运行时错误1004:应用程序定义错误或对象定义错误
Sub Worksheet_Calculate()
Application.ScreenUpdating = False
Dim cell As Range
For Each cell In Range("TestRange")
If cell.Value = "" Then
cell.Offset(-1, 1).Resize(8, 0).Select
Selection.EntireRow.Hidden = True
Else: cell.Offset(-1, 1).Resize(8, 0).Select
Selection.EntireRow.Hidden = False
End If
Next
Application.ScreenUpdating = True
End Sub
编辑:
好吧,我想我已经做到了以下几点:
Sub Worksheet_Activate()
Application.ScreenUpdating = False
Dim rngMyRange As Range
Dim cell As Range
Dim x As Integer
Dim y As Integer
Set rngMyRange = Range("TestRange")
For Each cell In rngMyRange.Cells
If cell.Value = "" Then
x = cell.Row - 1
y = cell.Row + 6
Rows("" & x & ":" & "" & y & "").Select
Selection.EntireRow.Hidden = True
Else: x = cell.Row - 1
y = cell.Row + 6
Rows("" & x & ":" & "" & y & "").Select
Selection.EntireRow.Hidden = False
End If
Next cell
Application.ScreenUpdating = True
End Sub
由于某些原因,它不适用于工作表\u calculate,但由于数据输入位于不同的选项卡上,因此使用工作表\u activate工作正常:
编辑:
好了,现在我把它放到了我的完整工作簿中,而不是小规模的测试版本中,让代码在JanRange的200个单元格上运行需要10秒的时间。我不想让它停留在工作表上,计算,甚至激活工作表。我已尝试将其关联到Sheet1上的表单控件按钮,但它不起作用。据我所知,您需要的是: 自动捕获图纸1中的更改的步骤 根据此更改自动隐藏第二个工作表中的单元格 因此: 1.将工作表更改方法添加到VBA中的Sheet1 2.在上述方法中,只需使用例如
Range("1:10").EntireRow.Hidden = true
此代码将隐藏第1-10行
使用工作表更改方法的挫折在于,我记得您将无法使用撤消功能CTRL+ZHi Tkacprow,谢谢您的评论!这样做的问题是,需要单独指定200个不同的范围,这将非常耗时。我希望有一种方法可以在JanRange表标题单元格中循环,并相对于范围中每个单元格的单元格地址隐藏上面的第1行和下面的第8行。