Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel .Range和.InsertShift在新工作表上复制表:覆盖数据_Excel_Insert_Vba - Fatal编程技术网

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
vs
xlShiftDown

Excel VBa为参数提供了许多枚举集。每个枚举都有一个基础数值。
Insert
方法,
Shift
参数使用
XlInsertShiftDirection
枚举:
xlShiftDown
xlShiftToRight

xlShiftDown
=-4121
从恰好具有相同基础数值的另一个集合(例如
xlDown
)提供枚举将起作用,但严格来说并不正确

关于插入的注释


Shift
参数是可选的。如果省略了它,Excel将根据范围的形状决定移动的方式。

我想我遗漏了什么。你能添加更多的代码吗?上述内容应单独使用。还应确保在自己的行中引用
insert
语句,而不使用任何
语句。你的代码对我有用。仅检查图纸是有效的图纸对象。您需要为我们添加更多代码来追踪问题。在工作表上:我刚刚使用了
Dim Sheet作为工作表
,然后是
Set Sheet=this工作簿。ActiveSheet
您能确认您只看到了最后一个结果,还是看到了相反的结果吗?我不敢相信您理解了这个问题。如果op看到的结果是相反的,而不是像问题所暗示的那样仅仅是最后一条记录,那么这就有意义了。谢谢大家的支持!非常感谢。逆序问题确实存在,但我认为它是一个二阶问题:-)。