作者:Sophie-wyq_661 | 来源:互联网 | 2023-01-31 21:30
我有以下代码:
Sub test()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim r As Long
Dim rng As Range
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
'Set some dummy data
For r = 1 To 20
ws1.Cells(r, "A").Value = r + 100
ws2.Cells(r, "A").Value = r + 200
Next
'Set a reference to Sheet1!A11
Set rng = ws1.Range("A11")
'Copy Sheet1 row 11 to Sheet2 row 5
rng.EntireRow.Cut ws2.Range("A5")
'Delete Sheet1 row 11
rng.EntireRow.Delete
End Sub
我为"Sheet1"的第11行中的单元格分配了引用.使用该引用,我Cut
将行放到"Sheet2"上的某个位置,然后我使用该引用从"Sheet1"中删除整行.
我的期望是"Sheet1"的第11行将被删除,在第1行到第10行的第A列101到110中保留值,在第11到19行中保留112到120的值.
发生的事情是第11行被清除(由于Cut
),第5行被删除.
代码执行后的图纸图像:
删除第5行的事实似乎与第5行是Cut
语句"Sheet2"上的目标行有关.如果它删除了"Sheet2"上的第5行,我可以理解发生了什么 - 即引用被重新命名为另一个工作表的一部分Cut
- 但它删除了"Sheet1"上的第5行.
任何人都能解释这种奇怪的行为吗?
注意:这个问题的灵感来自我试图写这个答案,我对OP的那个问题的许多评论告诉他们"当然EntireRow.Delete
会删除你的行 - 你为什么告诉我它不起作用".