2016-12-05 151 views
1

我有一个常规的VBA Worksheet_Change(ByVal Target As Range)例程,除了当用户粘贴一系列单元格而不是更改单个单元格值时,它正常工作。在Worksheet_Change中选择一个粘贴范围的单元格

有没有办法在程序开始这两种情况之间进行区分,因此:

  1. 单个小区变更运行正常
  2. 粘贴的范围内将设置 target到最后一个单元格范围已改变(即 粘贴A1:Z5会选择Z1) - 运行程序为 正常
+3

'如果Target.Count> 1 Then' –

+1

发布你的代码很可能是有用的 - 改变'目标'在这里是可疑的,因为它不像'取消'。粘贴的更改已经发生。 – Comintern

+0

谢谢你正是我需要的:) @Comintern,感谢您指出了更改天堂发生的警告,但是我的代码无论如何遍历每一列,所以这不是一个问题 – Bendy

回答

0

很简单的选项前:

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 
+0

根据OP的例子,应该是'设置目标= Target.Cells(1,Target.Columns.Count)' – user3598756

+0

@ user3598756我修改了我的答案。然而,当我读到“最后更改的单元格”时,我倾向于假设右下角,而不是右上角...... – Chrismas007

+0

@ Christmas007,同意 – user3598756

相关问题