【发布时间】:2020-05-19 00:35:01
【问题描述】:
以下代码是我一直在为我的雇主工作的表单自动化项目的一个更大的 Sub 的一部分。
'the following variable is named thusly for good reason.
Dim whyareyouactinglikethis As Object
Set whyareyouactinglikethis = Workbooks("DRQ Log.xlsx").Worksheets("DRQ's")
Dim finalRow As Object
With whyareyouactinglikethis
Set finalRow = Cells(99999, 1).End(xlUp).Row
End With
Dim Source As Range
Source = whyareyouactinglikethis.Range("D8:D" & finalRow & "")
所以我当前的问题是,无论出于何种原因,我在设置 finalRow 时都会收到运行时错误 424。我真的很困惑为什么这是因为“whyareyouactinglikethis”被明确设置为 with 语句正在使用的对象,finalRow 也是如此。在过去的两个小时里,我一直在盯着这多种方式,这就是我尝试过的。
将 finalRow 更改为长变量
将 finalRow 更改为 Range 变量(这会引入错误 91 语句)
在设置 finalRow 之前激活并选择Whyareyouactinglikethis,所以我知道这不是一些 .select 错误或缺乏适当的参考。
我需要做什么来解决这个问题?请告诉我。我对 Visual Basic 还是有点陌生,所以我不确定这只是我的经验不足还是这是一个合法的问题。
【问题讨论】:
-
删除
Set并将finalRow变成Long。您还缺少Set:Set Source = ... -
也没有理由使用
Object变量:Dim whyareyouactinglikethis as Worksheet。 -
你错过了一个句号:
finalRow = .Cells(....)... 而不是硬编码的99999,而是使用.Rows.Count。 -
@BigBen 非常感谢您解决了我的大部分问题,