【问题标题】:Visual Basic for Applications Object IssueVisual Basic for Applications 对象问题
【发布时间】: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。您还缺少SetSet Source = ...
  • 也没有理由使用Object 变量:Dim whyareyouactinglikethis as Worksheet
  • 你错过了一个句号:finalRow = .Cells(....)... 而不是硬编码的99999,而是使用.Rows.Count
  • @BigBen 非常感谢您解决了我的大部分问题,

标签: excel vba


【解决方案1】:

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 行开始

【讨论】:

  • 更多盗版...哎呀伙伴!
猜你喜欢
  • 1970-01-01
  • 2013-03-29
  • 1970-01-01
  • 1970-01-01
  • 2014-02-26
  • 1970-01-01
  • 2021-08-31
  • 2011-04-30
  • 1970-01-01
相关资源
最近更新 更多