需要过滤数据中已更改单元格的单元格地址

时间:2018-04-24 17:27:07

标签: excel-vba vba excel

我一直在绞尽脑汁,谷歌搜索并无济于事,所以希望有人可以提供帮助。

我有一个项目,用户打开一个电子表格,从SQL服务器中提取数据。如果用户更改了三列中的一列中的数据,那么数据将更新回SQL服务器。

到目前为止,我使用以下简单测试代码使用“Worksheet_Change”事件使用此部分,它返回“A”列中已更改单元格的地址,最终将更改的单元格地址传递给例程以进行更新具有更改数据的SQL服务器。

到目前为止我的测试代码是......

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Changed_Cell As Range
If Target.Column = 1 Then
    For Each Changed_Cell In Target
        MsgBox ("Changed_Cell : " & CStr(Changed_Cell.Address))
    Next Changed_Cell
End If
End Sub

虽然这有效,但我的问题是我需要使用自动过滤数据,因为用户喜欢使用自动过滤器,并且被告知“没有自动过滤器不是一种选择”。

如果我一次仅更改过滤范围中的一个单元格,则上述代码适用于自动过滤器。如果我尝试更改过滤范围内的多个单元格,则会中断。

所以我需要的是,对于自动过滤列中的每个更改的单元格,我给出了每个已更改单元格的单个单元格地址,而不是范围。 (希望有意义)

1 个答案:

答案 0 :(得分:0)

将柱A与Target中的潜在细胞分离。

Private Sub Worksheet_Change(ByVal Target As Range)

    If not intersect(Target, Columns(1)) is nothing Then
        Dim Changed_Cell As Range
        For Each Changed_Cell In intersect(Target, Columns(1))
            MsgBox ("Changed_Cell : " & CStr(Changed_Cell.Address))
        Next Changed_Cell
    End If

End Sub