删除单元格值时Excel隐藏/显示行worksheet_change无效

时间:2017-03-28 10:12:47

标签: excel-vba vba excel

首先我道歉,因为我是一个完全新手。我正在帮助我们的人力资源部门开发一个培训电子表格,并希望包含一些代码,这些代码在没有标记培训需求的情况下会隐藏一些行,这些代码是通过数值(即9或10)完成的。我已经使用此功能但是当我'删除'它不会触发更改事件的单元格值,即隐藏行。

我确信这是一个简单的解决方案,但不是我能够根据现有帖子得出的结论。

非常感谢任何人对此的帮助

感谢您

马特

Private Sub Worksheet_Change(ByVal Target As Range)

On Error GoTo Reset_EnableEvents
Application.EnableEvents = False

If Target.Address = "$O$4" Then
If IsNumeric(Target.Value) Then
If Target.Value >= 1 And Target.Value <= 8 Then
Sheets("Training Plan").Rows("5:21").EntireRow.Hidden = False
Else
If Target.Value < 11 And Target.Value >= 9 Then
Sheets("Training Plan").Rows("5:21").EntireRow.Hidden = True
End If
End If
End If
End If

If Target.Address = "$O$5" Then
If IsNumeric(Target.Value) Then
If Target.Value < 11 And Target.Value >= 9 Then
Sheets("Training Plan").Rows("23:40").EntireRow.Hidden = True
Else
If Target.Value >= 1 And Target.Value <= 8 Then
Sheets("Training Plan").Rows("23:40").EntireRow.Hidden = False
End If
End If
End If
End If


If Target.Address = "$O$6" Then
If IsNumeric(Target.Value) Then
If Target.Value < 11 And Target.Value >= 9 Then
Sheets("Training Plan").Rows("41:59").EntireRow.Hidden = True
Else
If Target.Value >= 1 And Target.Value <= 8 Then
Sheets("Training Plan").Rows("41:59").EntireRow.Hidden = False
End If
End If
End If
End If

If Target.Address = "$O$7" Then
If IsNumeric(Target.Value) Then
If Target.Value < 11 And Target.Value >= 9 Then
Sheets("Training Plan").Rows("60:77").EntireRow.Hidden = True
Else
If Target.Value >= 1 And Target.Value <= 8 Then
Sheets("Training Plan").Rows("60:77").EntireRow.Hidden = False
End If
End If
End If
End If

If Target.Address = "$O$8" Then
If IsNumeric(Target.Value) Then
If Target.Value < 11 And Target.Value >= 9 Then
Sheets("Training Plan").Rows("78:95").EntireRow.Hidden = True
Else
If Target.Value >= 1 And Target.Value <= 8 Then
Sheets("Training Plan").Rows("78:95").EntireRow.Hidden = False
End If
End If
End If
End If

If Target.Address = "$O$9" Then
If IsNumeric(Target.Value) Then
If Target.Value < 11 And Target.Value >= 9 Then
Sheets("Training Plan").Rows("96:113").EntireRow.Hidden = True
Else
If Target.Value >= 1 And Target.Value <= 8 Then
Sheets("Training Plan").Rows("96:113").EntireRow.Hidden = False
End If
End If
End If
End If

Reset_EnableEvents:
Application.EnableEvents = True
End Sub

0 个答案:

没有答案