【发布时间】:2017-07-08 07:07:41
【问题描述】:
试图找出我的代码中的错误。目前正在尝试做一些很简单的,打开工作表,复制粘贴数据过来。尝试在不使用 .Select 或 .Activate 的情况下完成所有操作。点击“应用程序定义的或对象定义的错误”,从阅读有关此事的其他线程来看,这可能意味着我的陈述不完全合格。但是,我无法弄清楚它们是如何不完全合格的——关于该主题的其他帖子似乎缺少一个“。”代码中的某个地方,但我修复它的尝试没有得到任何地方。严重截断的代码如下(如果你没有看到它变暗/定义,它在别处)
Sub CopyPaste()
Dim CitiReportEUR As Workbook
Dim CitiReportPathEUR As String
CitiReportPathEUR = Range("CitiReportPathEUR")
Workbooks.Open Filename:=CitiReportPathEUR
Set CitiReportEUR = ActiveWorkbook
LastRowCiti = CitiReportEUR.Sheets(1).Range("I" & Rows.Count).End(xlUp).Row
Set RngCitiEUR = CitiReportEUR.Sheets(1).Range("A1:CT" & LastRowCiti).SpecialCells(xlCellTypeVisible)
Set CabReport.Sheets("CITI").Range("C1").Resize(RngCitiEUR.Rows.Count).Value = RngCitiEUR.Value
End Sub
当前,当我定义范围时发生错误。历史上,我在粘贴到范围时也遇到过问题……但当我实际上可以让代码运行那么远时,这是一个问题!
【问题讨论】:
-
什么是“LastRowCS” - 它在哪里以及如何定义,它的价值是什么?使您的代码示例“显示问题的最小完整示例”通常是一个好主意。您显示的代码无法在没有多个错误的情况下运行。你能创建一段我们可以复制到我们的计算机并运行的代码 - 并得到同样的错误吗?见this
-
我认为当您修复错字(将
LastRowCS更改为LastRowCiti)后您的错误消失了,我是否正确? -
Rows.Count没有被限定,但错误将来自代码倒数第二行中Set的不当使用。删除Set(并限定Rows.Count),你应该没问题。 -
并且您可能需要调整列和行的大小,除非您的源范围仅是您在设置
RngCitiEUR时使用的A:CT的一列。 (不确定你的数据是什么样的,所以不能太确定。) -
啊,不,我还需要调整列的大小,你是对的。