Excel .Range和.InsertShift在新工作表上复制表:覆盖数据
我有一个关于Excel .Range和.InsertShift在新工作表上复制表:覆盖数据,excel,insert,vba,Excel,Insert,Vba,我有一个关于工作表的基本问题。范围和。插入Shift:=xlDown。 我想在我的工作表上导入一个只有两列的数字表。 每次宏读取原始表中的2个值(在同一行上)时,它都应将它们复制到工作表的A列和B列中,并通过在后续行中写入另一对数字来继续此过程。 如果我写 Sheet.Range(“A1:B1”)。插入移位:=xlDown 活页单元格(1,1)=“数字1” 表.单元格(1,2)=“数字2” 最后我得到的是原始表中的最后一对值。 换句话说,宏将逐行覆盖而不是向下移动。 我应该修改什么?谢谢 Avi
工作表的基本问题。范围和。插入Shift:=xlDown
。
我想在我的工作表上导入一个只有两列的数字表。
每次宏读取原始表中的2个值(在同一行上)时,它都应将它们复制到工作表的A列和B列中,并通过在后续行中写入另一对数字来继续此过程。
如果我写
Sheet.Range(“A1:B1”)。插入移位:=xlDown
活页单元格(1,1)=“数字1”
表.单元格(1,2)=“数字2”
最后我得到的是原始表中的最后一对值。
换句话说,宏将逐行覆盖而不是向下移动。
我应该修改什么?谢谢
Avitus您发布的代码可以正常工作,但将新数据按相反的顺序放置
测试为
Sub demoAsIs()
Dim Sheet As Worksheet
Dim i As Long
Set Sheet = ActiveSheet
For i = 0 To 4
Sheet.Range("A1:B1").Insert Shift:=xlShiftDown
Sheet.Cells(1, 1) = "number " & 2 * i + 1
Sheet.Cells(1, 2) = "number " & 2 * i + 2
Next
End Sub
样本数据
之前:
之后:
要颠倒顺序,请尝试以下操作
Sub demo()
Dim Sheet As Worksheet
Dim i As Long
Dim rNewData As Range
Set Sheet = ActiveSheet
Set rNewData = Sheet.Range("A1:B1")
For i = 0 To 4
rNewData.Insert Shift:=xlShiftDown
' rNewData now refers to the one row down from where it was
rNewData.Cells(0, 1) = "number " & 2 * i + 1
rNewData.Cells(0, 2) = "number " & 2 * i + 2
Next
End Sub
结果:
注意xlDown
vsxlShiftDown
Excel VBa为参数提供了许多枚举集。每个枚举都有一个基础数值。Insert
方法,Shift
参数使用XlInsertShiftDirection
枚举:xlShiftDown
,xlShiftToRight
xlShiftDown
=-4121
从恰好具有相同基础数值的另一个集合(例如xlDown
)提供枚举将起作用,但严格来说并不正确
关于插入的注释
Shift
参数是可选的。如果省略了它,Excel将根据范围的形状决定移动的方式。我想我遗漏了什么。你能添加更多的代码吗?上述内容应单独使用。还应确保在自己的行中引用insert
语句,而不使用任何语句。你的代码对我有用。仅检查图纸是有效的图纸对象。您需要为我们添加更多代码来追踪问题。在工作表上:我刚刚使用了Dim Sheet作为工作表
,然后是Set Sheet=this工作簿。ActiveSheet
您能确认您只看到了最后一个结果,还是看到了相反的结果吗?我不敢相信您理解了这个问题。如果op看到的结果是相反的,而不是像问题所暗示的那样仅仅是最后一条记录,那么这就有意义了。谢谢大家的支持!非常感谢。逆序问题确实存在,但我认为它是一个二阶问题:-)。