我一直在绞尽脑汁,谷歌搜索并无济于事,所以希望有人可以提供帮助。
我有一个项目,用户打开一个电子表格,从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
虽然这有效,但我的问题是我需要使用自动过滤数据,因为用户喜欢使用自动过滤器,并且被告知“没有自动过滤器不是一种选择”。
如果我一次仅更改过滤范围中的一个单元格,则上述代码适用于自动过滤器。如果我尝试更改过滤范围内的多个单元格,则会中断。
所以我需要的是,对于自动过滤列中的每个更改的单元格,我给出了每个已更改单元格的单个单元格地址,而不是范围。 (希望有意义)
答案 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