我的电子表格具有目标单元格以及我希望能够输入手动数据而无需激活或运行“工作表更改”的单元格。如何在不运行私有子程序的情况下填充这些开放用户单元? 更多信息示例代码。像这样的许多代码节都采用相同的格式。
Private sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = True
If Intersect(Target, Range("$B$8:$k$9")) Is Nothing Then
GoTo NEXT10
'Application.EnableEvents = False
End If
Application.EnableEvents = True
MsgBox Target.Address
'-------------------------------------------------------------------
'Application.EnableEvents = True
Application.EnableEvents = False
If Target.Address = "$B$8" Then
If Target.Value >= 0 Then
Range("B9") = Range("B8").Value * 42
End If
ElseIf Target.Address = "$B$9" Then
Range("B8") = Range("B9").Value / 42
End If
Application.EnableEvents = True
End Sub
问题是,如果我在工作表上的任何空白单元格中输入,删除值或文本,它将激活Worksheet_Change (ByVal Target ....)
。如果没有更改,我将使用If Intersect(Target,Range($B8$:$k$8) Is Nothing
绕过目标。此格式用于其他重要的目标范围。但是我不明白为什么当任何单元被改变时程序会运行?可以避免这种情况,以便执行各种手动输入吗?例如文字注释,标签等。
Next10是另一部分代码的开头,但目标地址不同。如果指示的目标地址没有相交,则检查下一个相交点。