【发布时间】:2015-12-09 19:11:08
【问题描述】:
我的工作簿第 1 页上有一组原始数据。在表 2 上,我使用公式从表 1 中提取一些数据。
使用我在模块 1 中创建和发布的宏,我想隐藏任何不包含特定数据的行。当我需要通过 Run>Run Sub/Userform 时,我可以直接执行宏。效果很好。
但是,每当对工作表 1 进行编辑时,我希望它在需要通过后台的 worksheet_change 事件进行更新时运行。因为我在工作表 1 上进行编辑,但希望更改在工作表上执行宏2 我了解必须将 worksheet_change 事件放置在“此工作表”中,而不是放在特定工作表中。
这是宏代码
Sub HideRows()
Dim i As Integer
i = 1
Do While Not Cells(i, 5) = ""
If Cells(i, 5).Value = 0 Then
Rows(CStr(i) + ":" + CStr(i)).EntireRow.Hidden = True
ElseIf Cells(i, 5).Value <> 0 And Rows(CStr(i) + ":" + CStr(i)).EntireRow.Hidden = True Then
Rows(CStr(i) + ":" + CStr(i)).EntireRow.Hidden = False
End If
i = i + 1
Loop
End Sub
直接运行上面的代码可以满足我的需要。我在下面通过 worksheet_change 事件执行此操作的代码不起作用。
Private Sub Worksheet_Change(ByVal Target As Range)
With Me.Worksheets("Sheet2")
Call HideRows
End With
End Sub
任何有关如何使用 worksheet_change 执行宏的帮助将不胜感激。
【问题讨论】:
-
这不是和你的prev一样吗Question
-
不是真的,那是关于隐藏/取消隐藏行所需的代码。这是关于如何执行的。虽然有一些重叠,但我没有在那个问题中发布任何代码。
-
在您的
HideRows宏中,完全限定单元格。例如Sheet2.Cells(i, 5).Value -
另外,Sheet 1 中发生的变化在哪里?哪个单元格或列?
-
我已经发布了答案。您可能需要刷新页面才能看到它