VBA无法处理单元格更改时执行代码的名称更改。

57 浏览
0 Comments

VBA无法处理单元格更改时执行代码的名称更改。

我遇到了与这篇帖子中相同的问题。提供的答案按照要求执行了代码,当给定的单元格发生变化时。它也对我起作用,除了当我尝试将Sub的名称更改为其他内容时,代码就不再执行了。没有任何警告。有人知道是为什么吗?

以下是之前问题的解决方案代码:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Me.Range("D2")) Is Nothing Then Exit Sub
    Application.EnableEvents = False '防止无限循环
    MsgBox "您已更改该单元格!"
    Application.EnableEvents = True
End Sub

或者更简洁的版本:

Private Sub Worksheet_Change(ByVal Target As Range)
    IF Target.Address = "$D$2" Then
        MsgBox("单元格D2已更改。")
    End If
End Sub

当我更改它们的名称时,这两个Sub的反应都是相同的。是否有触发器调用宏的地方,我也需要更改名称?

0
0 Comments

VBA不支持更改工作表事件方法的名称。这个名称是VBA用来判断当工作表发生变化时应该触发哪个方法的依据。

VBA是一种编程语言,可以在Excel中编写宏来自动执行一些操作。其中,可以使用VBA来编写在单元格发生变化时执行代码的功能。然而,VBA并不支持更改工作表事件方法的名称。

工作表事件是指当工作表的某些内容发生变化时,VBA可以自动执行一些代码。常见的工作表事件包括单元格值变化事件、工作表选择事件等。当这些事件发生时,VBA会自动调用对应的方法来执行相应的操作。

然而,由于VBA的限制,我们不能更改工作表事件方法的名称。这个名称是VBA用来判断当工作表发生变化时应该触发哪个方法的依据。如果我们尝试更改这个方法的名称,VBA将无法正确识别并执行代码。

解决这个问题的方法是使用正确的事件方法名称。在VBA中,工作表事件方法的命名是有一定规则的。例如,当单元格的值发生变化时,我们可以使用"Worksheet_Change"方法来处理这个事件。如果我们想处理工作表选择事件,可以使用"Worksheet_SelectionChange"方法。

总之,VBA不支持更改工作表事件方法的名称,因为这个名称是VBA用来判断该方法是否与工作表事件相关联的依据。为了解决这个问题,我们需要使用正确的事件方法名称来处理相应的工作表事件。

0
0 Comments

VBA中的代码执行在单元格更改时无法处理名称更改的原因及解决方法

在VBA中,我们经常使用Worksheet_Change事件来在单元格更改时执行代码。然而,我们可能会遇到一个问题,就是该事件无法处理名称更改。下面我们来探讨一下这个问题的原因以及解决方法。

原因:

Worksheet_Change事件是一个系统调用的事件,必须按照这个名称命名。然而,它却无法处理名称更改。这是因为名称更改不会触发Worksheet_Change事件。

解决方法:

要解决这个问题,我们可以使用Workbook_SheetChange事件来处理名称更改。这个事件是在工作簿中的任何工作表上更改单元格时触发的。下面是一个示例代码来演示如何使用Workbook_SheetChange事件来处理名称更改:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Target.Name.Name <> "" Then
        ' 处理名称更改的代码
        ' 在这里编写你的代码
    End If
End Sub

在上面的代码中,我们首先检查目标单元格的名称是否为空。如果不为空,说明发生了名称更改,我们可以在代码中编写处理名称更改的逻辑。

尽管VBA中的Worksheet_Change事件无法处理名称更改,但我们可以使用Workbook_SheetChange事件来处理这个问题。通过使用Workbook_SheetChange事件,我们可以在名称更改时执行自己的代码逻辑。希望以上内容能帮助你解决在VBA中处理名称更改的问题。

0