Vba 范围属性过程中应用程序定义的错误,是什么导致了错误?
我感兴趣的是为什么下面的行Vba 范围属性过程中应用程序定义的错误,是什么导致了错误?,vba,excel,Vba,Excel,我感兴趣的是为什么下面的行(“表(“欧元/美元”)。列(“A”)。结束(xlDown)。偏移量(1,0)。值=欧元/美元。t\U日期”)会导致 “应用程序定义或对象定义错误” 将代码替换为等效代码:Sheets(“Euro_USD”).Cells(rows.Count,“A”).End(xlUp).Offset(1,0).Value=Euro_USD.t_date会导致错误消失 为什么会出现错误?这是否与end(xldown)for columns属性已在堆栈中被占用(术语上不确定)有关,因此新
(“表(“欧元/美元”)。列(“A”)。结束(xlDown)。偏移量(1,0)。值=欧元/美元。t\U日期”)
会导致
“应用程序定义或对象定义错误”
将代码替换为等效代码:Sheets(“Euro_USD”).Cells(rows.Count,“A”).End(xlUp).Offset(1,0).Value=Euro_USD.t_date
会导致错误消失
为什么会出现错误?这是否与end(xldown)for columns属性已在堆栈中被占用(术语上不确定)有关,因此新请求生成错误
Private Sub run() ' run the whole operation
Dim HTTP_Req As Object: Set HTTP_Req = New HTTP_Req
Dim EURO_USD As Object: Set EURO_USD = New EURO_USD
If Sheets("EURO_USD").Columns("A").End(xlDown).Value = DateValue(EURO_USD.t_date) Then
Debug.Print "Date already exist"
Else
Sheets("Euro_usd").Columns("A").End(xlDown).Offset(1, 0).Value = EURO_USD.t_date <-- Error here!
End If
End Sub
Private Sub run()'运行整个操作
Dim HTTP_Req作为对象:设置HTTP_Req=新建HTTP_Req
作为对象的Dim EURO\U USD:设置EURO\U USD=新的EURO\U USD
如果表格(“欧元兑美元”)列(“A”)结束(xlDown).Value=日期值(欧元兑美元.t\u日期),则
调试。打印“日期已存在”
其他的
表(“欧元兑美元”)。列(“A”)。结束(xlDown)。偏移量(1,0)。值=欧元兑美元兑美元日期如果列A为空,此语句将尝试在表中最大行之后的行中写入,这是不可能的。通过打印表(“欧元/美元”)。列(“A”)。结束(xlDown)。行来检查。它可能等于Sheets(“Euro_usd”).Rows.Count
(它给出了最大行数)
如果列A为空,则第二条语句(xlUp
)将产生第一行,从而将值写入第二行(Offset(1,0)
)。查找最后一行,然后添加值。您可能还想查看以检查日期是否在列中,您可以使用Application.WorksheetFunction.CountIf()
a列不是空的。。。因此,写入shets(“Euro_usd”).列(“A”).结束(xldown)。行返回3写入此值时,Euro_usd.t_日期的值和类型是什么?如果可以设置表(“Euro_usd”).列(“A”).结束(xldown)。偏移量(1,0)。值=日期,请尝试。所有这些都是为了找出陈述的哪一部分引起了错误。谢谢你花时间来帮助我。=date语句工作正常。