如果在多个工作表上的指定字段中输入任何大于0的数字,则会有一行打开。本质上,当所有目标地址的总和都是> 0时,我希望该行被取消隐藏,但是当该总和为0时隐藏。我使用的示例代码部分是:
If Target.Address = "$D$16" Then
If Target.Value > 0 Then
Activate
Sheets("6. Local").Rows("54").EntireRow.Hidden = False
End If
End If
If Target.Address = "$D$31" Then
If Target.Value > 0 Then
Activate
Sheets("6. Local").Rows("54").EntireRow.Hidden = False
End If
End If
If Target.Address = "$D$32" Then
If Target.Value > 0 Then
Activate
Sheets("6. Local").Rows("54").EntireRow.Hidden = False
End If
End If
我有类似的代码在另外两个工作表上指定不同的单元格(但在" 6.本地"上的相同的行54)。一切都运行良好,但如果用户由于输入错误而返回并将所有目标地址的总和从> 0更改回= 0,我无法弄清楚如何让第54行返回隐藏状态,因为这种变化。有什么建议?谢谢你的帮助!
答案 0 :(得分:0)
使用此代码,您可以检查Target.address
是否与您的某个范围相交,然后检查范围之和是否小于0,否则该行将可见。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim xl_ranges As Range
Set xl_ranges = Range("D16,D31,D32")
Set isect = Application.Intersect(Target, xl_ranges)
If Not isect Is Nothing And Application.WorksheetFunction.sum(xl_ranges) > 0 Then
Target.Activate
Sheets("6. Local").Rows("54").EntireRow.Hidden = False
Else
Sheets("6. Local").Rows("54").EntireRow.Hidden = True
End If
End Sub
答案 1 :(得分:0)
我想我已经使用以下代码解决了这个问题。对于我需要跟踪的每个活动工作表,我更改了Me.Range
以覆盖相关单元格。如果有人发现此解决方案存在任何问题,请告诉我们!谢谢你的帮助!
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo errHandler
Application.ScreenUpdating = False
Dim rng1 As Range
Set rng1 = ThisWorkbook.Sheets("6. Local").Range("$C$54")
If Not Intersect(Target, Me.Range("$D$6,$D$27")) Is Nothing Then
Application.EnableEvents = False
If Target.Value > 0 Then
Activate
Sheets("6. Local").Rows("54").EntireRow.Hidden = False
ElseIf rng1.Value > 0 Then
Activate
Sheets("6. Local").Rows("54").EntireRow.Hidden = False
ElseIf rng1.Value = 0 Then
Activate
Sheets("6. Local").Rows("54").EntireRow.Hidden = True
End If
Application.EnableEvents = True
End If
Application.ScreenUpdating = True
errHandler:
Application.ScreenUpdating = True
End Sub