2016-12-05 157 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

相關問題