【发布时间】:2017-12-12 22:07:30
【问题描述】:
我最近将我的工作 Microsoft 帐户从 Excel 2010 升级到 Excel 2016。
虽然我还有 Excel 2010,但我编写了一系列宏来自动执行一项相当繁琐的任务。迁移到 Excel 2016 后,我的一个 VBA 脚本似乎已“损坏”。
下面是脚本:
Sub RunMacro()
Sheets("Control1").Select
'Step 1: #Script searches for header matches in Control1 dataset, then will copy in next
'step to Data list
With Sheets("Control1")
Route_Name = WorksheetFunction.Match("ROUTE_NAME", Rows("1:1"), 0)
Feature_Type = WorksheetFunction.Match("FEATURE_TYPE", Rows("1:1"), 0)
Shape_Length = WorksheetFunction.Match("SHAPE_LENGTH", Rows("1:1"), 0)
'Step 2: #Data transfer process
Sheets("Control1").Columns(Route_Name).Copy Destination:=Sheets("Data").Range("A7")
Sheets("Control1").Columns(Feature_Type).Copy Destination:=Sheets("Data").Range("B7")
Sheets("Control1").Columns(Shape_Length).Copy Destination:=Sheets("Data").Range("T7")
End With
End Sub
当我运行脚本时,我收到一个运行时错误“1004”,指出:“您不能在此处粘贴它,因为复制区域和粘贴区域的大小不同。在粘贴区域或相同大小的区域,然后再次尝试粘贴。”
困难在于,这个脚本在 Excel/VBA 2010 中运行没有问题。这个脚本可能存在什么问题,或者,是否存在潜在的宏安全设置限制它正常运行?
感谢您的帮助。
【问题讨论】:
-
整列有 1048576 个单元格,您正试图从第 7 行开始粘贴它。从第 7 行到工作表底部只有 1048569 个单元格。所以无法粘贴。
-
我看不出这将如何在任何版本上工作,您正在尝试将整列(例如,列中可能的所有单元格)复制到该列中的单元格中。当然行数不够。试试 Sheets("Control1").Columns(Route_Name).Copy Destination:=Sheets("Data").Columns(1),或者任何合适的列
-
绅士,我认为你是绝对正确的。我该如何解决这个问题?我刚刚意识到我之前将数据粘贴到 R1C1