运行 关闭工作簿时的 Worksheet_change 函数

Running a Worksheet_change function when closing the workbook

我想 运行 一个 Worksheet_change 函数,它将任何已更改单元格的单元格引用收集到“单元格”对象数组中,但我一直收到错误“类型不匹配”。这是我到目前为止所得到的:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim arArray(1 To 70) As Range
Dim K As Integer
K = 1
    For i = 1 To 70
        For j = 2 To 14
        If Target.Column = j And Target.Row = i Then
           Set arArray(K) = Target.Address
        K = K + 1
        End If
        Next j
    Next i
End Sub
   

目前代码会查找网格 B1 到 N70 中的任何更改,如果该网格中的某个单元格发生更改,则存储更改后的单元格。

如有任何帮助,我们将不胜感激。

现在,您的代码设置为每次有任何单元格更改时都会查看多个单元格。根据您的初步描述,我确定这不是您真正想要的。在下面的代码中,Worksheet_Change 通过将其地址放入名为“changed_cells”的集合中来跟踪在 B1:N70 中更改的每个单元格。而“show_changes”打印更改为立即 window.

的单元格的地址
Option Explicit
Dim changed_cells As New Collection

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Range("B1:N70"), Target) Is Nothing Then
    changed_cells.Add Target.Address(False, False)
  End If
End Sub

Private Sub show_changes()
    Dim x As Long
    For x = 1 To changed_cells.Count
       Debug.Print changed_cells(x)
    Next
End Sub

注意:如果直接 window 不可见,请按 ctrl+g 查看输出

您在顶部声明了一个 Range 对象数组,Target.Address 属性 returns 一个字符串。

你的线路

Set arArray(K) = Target.Address

应该是

Set arArray(K) = Range(Target.Address)