应用程序定义或对象定义的错误 - 合格的参考文献Excel

问题描述:

试图找出我的代码中的错误。目前正在尝试做一些非常简单的打开工作表,复制和粘贴数据。试图做到这一切,而不使用。选择或。激活。点击“应用程序定义或对象定义的错误”,通过阅读关于此事的其他线索,可能意味着我的陈述不完全合格。然而,我无法弄清楚他们是不是完全合格 - 关于这个话题的其他帖子似乎缺少一个“。”。在代码的某个地方,但我尝试修复它并没有得到任何地方。如下(如果你没有看到它变暗/定义,这是其他地方)重截码应用程序定义或对象定义的错误 - 合格的参考文献Excel

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 

目前,当我定义的范围错误发生。我在历史上遇到了粘贴到范围内的问题......但是,当我真正能够运行代码时,这是一个问题!

+0

什么是“LastRowCS” - 在那里,它是如何定义的,什么是它的价值?将代码示例“显示问题的最小完整示例”通常是一个好主意。您显示的代码不能在没有多个错误的情况下运行。你可以创建一段代码,我们可以复制到我们的电脑并运行 - 并获得相同的错误?请参阅[this](https://*.com/help/mcve) – Floris

+1

我是否认为修正错字时将错误消失(将LastRowCS更改为LastRowCiti)? – Floris

+0

'Rows.Count'还没有被限定,但是错误将来自代码的倒数第二行中'Set'的不恰当使用。删除'Set'(并限定'Rows.Count'),你应该没问题。 – YowE3K

  1. Rows.Count隐式与ActiveSheet一起工作。
  2. 将值分配给RangeValue属性时使用Set是不合适的。 Set只应在分配对象的引用时使用。
  3. Resize可能需要满足源和列的列数。

此代码是更明确:

Sub CopyPaste() 
    Dim CitiReportEUR As Workbook 
    Dim CitiReportPathEUR As String 

    CitiReportPathEUR = Range("CitiReportPathEUR") 
    Set CitiReportEUR = Workbooks.Open(Filename:=CitiReportPathEUR) 
    With CitiReportEUR.Sheets(1) 
     LastRowCiti = .Range("I" & .Rows.Count).End(xlUp).Row 
     Set RngCitiEUR = .Range("A1:CT" & LastRowCiti).SpecialCells(xlCellTypeVisible) 
    End With 
    CabReport.Sheets("CITI").Range("C1").Resize(RngCitiEUR.Rows.Count, RngCitiEUR.Columns.Count).Value = RngCitiEUR.Value 
End Sub