我正在尝试自动化报告表单。从Sheet1上的验证下拉列表中选择的文本值(通过公式),无论Sheet9上的单元格是否具有值“”或在第一张纸上输入的值的串联混合。
Sheet9基本上包含200个空白表(包括其间的行,每个表9行),我们关注的单元格为每个表提供一个标题,表示它们需要完成。任何没有标题的表都应该被隐藏。
我已经命名了一个范围“JanRange”,它只是标题单元格,我希望循环到每个目标标题单元格,评估它是否显示值,如果没有,则隐藏1行的行块以上8行以下。
我看了遍布这个地方,但我试图运行的任何东西似乎都不起作用(我认为我遇到的主要问题是让Sheet9的代码基于Sheet9上的单元格运行,通过公式取决于Sheet1的变化
如果您需要我提供更多详细信息,请直接询问!
非常感谢,
邓克
修改
所以我现在得到以下代码,它将成功隐藏我命名范围内每个标题单元格的行:
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
由于某种原因,它不能与Worksheet_calculate()一起使用,但由于数据输入位于不同的选项卡上,因此使用Worksheet_activate()可以正常工作:)
修改
好了,现在已经把它放到我的完整工作簿而不是小规模的测试版本中,让JanRange中的200个单元格上的代码运行在10秒的范围内。我不希望这种情况发生在Worksheet_calculate甚至worksheet_activate上。我已经尝试将它与Sheet1上的表单控件按钮相关联,但它不起作用..
答案 0 :(得分:0)
据我所知,你需要的是:
因此: 1.将工作表更改的方法添加到VBA中的Sheet1 http://msdn.microsoft.com/en-us/library/office/ff839775(v=office.15).aspx 2.在上述方法中,只需使用例如
隐藏单元格Range("1:10").EntireRow.Hidden = true
此代码将隐藏1-10行。
使用工作表更改方法的挫折是(我记得)你将无法使用撤消功能(CTRL + Z)