首页 > 解决方案 > 如何通过激活子 Worksheet_Change(ByVal Target As Range) 修复非目标单元格

问题描述

我的电子表格有目标单元格和单元格,我希望能够在没有工作表更改激活或运行的情况下输入手动数据。如何允许在不运行私有子系统的情况下填充这些打开的用户单元格?更多信息示例代码。有许多类似的代码段采用相同的格式。

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

标签: excelvba

解决方案


推荐阅读