Sub hide()
Dim wb As Workbook
Dim ws As Worksheet
Dim c As Range
Dim targetRange As Range
Set wb = ThisWorkbook
Set ws = wb.Sheets("Ballast Quote")
Set targetRange = ws.Range("A20:A30")
targetRange.EntireRow.Hidden = False
For Each c In targetRange.Rows
If (WorksheetFunction.CountIf(c, "<>0") - WorksheetFunction.CountIf(c, "") = 0) And (WorksheetFunction.CountA(c) - WorksheetFunction.Count(c) = 0) Then
c.EntireRow.Hidden = True
End If
Next c
End Sub
此宏运行完美,但是我不想每次单元格范围更改时都进入“ F5”。我的问题是触发宏的单元格不是手动更改,而是另一张纸的结果,示例单元格A20显示“ = Inventory!$ L $ 41”。我没有在此选项的任何答案上找到按钮或是否手动更改了单元格。任何参与者?
答案 0 :(得分:0)
我建议调查事件,它们通常是Sub或函数,只要工作表/工作簿发生问题
您想要的特定事件是:Worksheet.Change(https://docs.microsoft.com/en-us/dotnet/api/microsoft.office.tools.excel.worksheet.change?view=vsto-2017)
您可以钩住该子项以激活您的子项,或在其中输入您的代码。该文档使用C#,但是使用相同的事件,属性和方法
答案 1 :(得分:0)
使用inventory
工作表上的Worksheet.Change Event测试原始数据是否已更改:
'this must be in Inventory worksheet!
Private Sub Worksheet_Change(ByVal Target as Range)
If Not Intersect(Target, Me.Range("L41")) Is Nothing Then
hide 'run your procedure to hide
End If
End Sub
这将测试Inventory!$L$41
是否已更改,如果是,它将运行您的隐藏过程。