【问题标题】:Application-Defined or Object-Defined Error Excel应用程序定义或对象定义的错误 Excel
【发布时间】:2014-07-22 15:08:32
【问题描述】:

我在 Excel 2010 中有这个子程序,它应该执行以下操作:

·         取 Sheet1(Form) 中 (6, 4) 中的值,在 Sheet7 的 (Dates) 列 1 中找到该值

·         查找找到匹配项的行

·         在 Sheet7(row, 6) 处查找值

·         粘贴到 Sheet1(19, 5)

Sheet1 的标题是 Form,Sheet7 的标题是 Dates。

这是我写的代码。当我尝试运行它时,它在 Sheets("Dates") 处给我一个运行时错误“1004:应用程序定义或对象定义错误”......任何帮助将不胜感激。

 Option Explicit

Private Sub btnNext_Click()
        Dim ProjNo As String
        Dim ProjRow As Long
        Dim Found As Range   

    ProjNo = Worksheets("Form").Cells(6, 4).Value        

         Set Found = Sheets("Dates").Columns(1).Find(what:=ProjNo, LookIn:=xlValues, lookat:=xlWhole)

          If Found Is Nothing Then   
              MsgBox "Project not found."    
              EnterProj.Show    
         Else   
             ProjRow = Found.Row    
        End If        

          Sheets("Dates").Range(ProjRow, 6).Copy Destination:=Sheets("Form").Range(19, 5)    

End Sub

【问题讨论】:

  • Sheets("Dates").Columns(1)1 没有引号
  • 现在我在 Sheets("Dates") 收到错误...
  • 'Sheets("Dates").Range(ProjRow, 6).Copy Destination:=Sheets("Form").Range(19, 5)' ,去掉引号
  • 它仍然在同一个地方给我同样的错误。
  • 我建议您根据已经建议的更正,使用您现在拥有的代码更新代码。

标签: vba excel excel-2010


【解决方案1】:

你没有正确使用Range Object

例如

.Range(2,6)Cells(2,6),范围参数必须是A1-style referenceother styles

替换

Sheets("Dates").Range(ProjRow, 6).Copy Destination:=Sheets("Form").Range(19, 5)

Sheets("Form").Cells(19, 5)=  Sheets("Dates").Cells(ProjRow, 6) 

【讨论】:

  • 它没有给我一个错误,但它也没有将值从一张纸粘贴到另一张纸上。
  • 第二行如何执行所需的任务?第一行(如果您将 Range 换成 Cells)试图从 projRow 复制到第 19 行。您正在分配给 projRow 而不是第 19 行
  • 糟糕,我翻转了源和目标,我更新了答案
  • 他真正需要做的就是让代码工作在该行的两个实例中翻转单元格的范围,然后它可以在我的机器上工作。不过你的更好,因为在这种情况下,他想要的只是价值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多