我有一个常规的VBA Worksheet_Change(ByVal Target As Range)
例程,除了当用户粘贴一系列单元格而不是更改单个单元格值时,它正常工作。在Worksheet_Change中选择一个粘贴范围的单元格
有没有办法在程序开始这两种情况之间进行区分,因此:
- 单个小区变更运行正常
- 粘贴的范围内将设置
target
到最后一个单元格范围已改变(即 粘贴A1:Z5会选择Z1) - 运行程序为 正常
我有一个常规的VBA Worksheet_Change(ByVal Target As Range)
例程,除了当用户粘贴一系列单元格而不是更改单个单元格值时,它正常工作。在Worksheet_Change中选择一个粘贴范围的单元格
有没有办法在程序开始这两种情况之间进行区分,因此:
target
到最后一个单元格范围已改变(即 粘贴A1:Z5会选择Z1) - 运行程序为 正常很简单的选项前:
A1:Z5会选择Z5:
If Target.Count > 1 Then
Set Target = Target.Cells(Target.Rows.Count, Target.Columns.Count)
End If
A1:Z5会选择Z1:
If Target.Count > 1 Then
Set Target = Target.Cells(1, Target.Columns.Count)
End If
根据OP的例子,应该是'设置目标= Target.Cells(1,Target.Columns.Count)' – user3598756
@ user3598756我修改了我的答案。然而,当我读到“最后更改的单元格”时,我倾向于假设右下角,而不是右上角...... – Chrismas007
@ Christmas007,同意 – user3598756
'如果Target.Count> 1 Then' –
发布你的代码很可能是有用的 - 改变'目标'在这里是可疑的,因为它不像'取消'。粘贴的更改已经发生。 – Comintern
谢谢你正是我需要的:) @Comintern,感谢您指出了更改天堂发生的警告,但是我的代码无论如何遍历每一列,所以这不是一个问题 – Bendy