如何通过激活子Worksheet_Change(ByVal目标为范围)来修复非目标单元格

时间:2018-12-20 12:37:09

标签: excel vba

我的电子表格具有目标单元格以及我希望能够输入手动数据而无需激活或运行“工作表更改”的单元格。如何在不运行私有子程序的情况下填充这些开放用户单元? 更多信息示例代码。像这样的许多代码节都采用相同的格式。

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是另一部分代码的开头,但目标地址不同。如果指示的目标地址没有相交,则检查下一个相交点。

0 个答案:

没有答案