我正在使用Change event
在Excel中处理intersect
,如下所示:
Sub Worksheet_Change(ByVal Target As Range)
Dim WatchRange As Range
Dim IntersectRange As Range
Set WatchRange = Range("B2:B65536")
Set IntersectRange = Intersect(Target, WatchRange)
If IntersectRange Is Nothing Then
'Do Nothing
Else
For Each b In Target.Rows
Range("A" & b.Row).Value = "*"
Next
End If
End Sub
当我在列B
中更改内容时,会将*
写入列A
。而且效果很好。
当我设置过滤器并使用CTRL+D
将某些值复制到过滤的行时,会出现问题。这是我的测试表:
仅在text
列中过滤C
:
使用100
将号码CTRL+D
复制到所有可见行(列B
):
取消过滤器后,所有行都标有*
:
在小表中不会出现问题,但在表中大约需要1000秒,大约需要10秒。
是否有可能以某种方式跳过hiden文件?
答案 0 :(得分:1)
使用.EntireRow.Hidden
确定特定单元格是否已过滤。您的代码如下:
Sub Worksheet_Change(ByVal Target As Range)
Dim WatchRange As Range
Dim IntersectRange As Range
Set WatchRange = Range("B2:B65536")
Set IntersectRange = Intersect(Target, WatchRange)
If IntersectRange Is Nothing Then
'Do Nothing
Else
For Each b In Target
If b.EntireRow.Hidden = False Then
Range("A" & b.Row).Value = "*"
End If
Next
End If
End Sub