Yow*_*E3K 9 excel vba excel-vba
我有以下代码:
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
Run Code Online (Sandbox Code Playgroud)
我为"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会删除你的行 - 你为什么告诉我它不起作用".
小智 0
试试我的代码:
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
Range("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
738 次 |
| 最近记录: |