首页 > 解决方案 > Visual Basic for Applications 对象问题

问题描述

以下代码是我一直在为我的雇主工作的表单自动化项目的一个更大的 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 还是有点陌生​​,所以我不确定这只是我的经验不足还是这是一个合法的问题。

标签: excelvba

解决方案


Set对象(工作簿、工作表、范围等)并分配值(最后一行变量、字符串等)。


Sub try()

Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("DRQ's")
Dim lr As Long, Source As Range

lr = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
Set Source = ws.Range("D8:D" & lr)

End Sub

此外,这里使用了一个更疯狂的最后一行计算,而不是从第 99,999 行开始


推荐阅读