我有一個常規的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