首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对象在尝试将值设置为范围时出错- 424。

对象在尝试将值设置为范围时出错- 424。
EN

Stack Overflow用户
提问于 2017-12-15 16:48:58
回答 2查看 1.1K关注 0票数 1

我正在尝试获取单元格的引用位置(这可以很容易地更改),并在筛选出的唯一记录列表中引用该位置,当用户初始化UserForm时,该列表将自动更新。

在工作表9(助手)单元格上,AI2返回工作表1 (SA薪资区工作表)上单元格的绝对位置。AI2包含以下公式:

代码语言:javascript
复制
=CELL("address",INDEX('SA Payroll Dist Sheet'!B:B,MATCH(Helpers!AH2,'SA Payroll Dist Sheet'!B:B,0)))

然后,单元格AJ2使用以下方法查看AI2中值的最后一个数字:

代码语言:javascript
复制
=RIGHT(AI2,6)

这将正确地返回值。

$B$547 (这是我想要的单元格引用)

下面是当我尝试初始化UserForm时所发生的事情:

运行时错误“424”:所需对象

适用于以下方面:

代码语言:javascript
复制
Dim ER As Range 

  'I want 'ER' to represent the value in AJ2

Set ER = ActiveWorkbook.Sheets(9).Range("AJ2").Value 

  'Here's where debugger highlights yellow


Worksheets("SA Payroll Dist Sheet").Range("$B$15:ER").Select 

  ' Is this even the proper way to refer to the range I am after? 
  ' In this case, the range would be ("$B$15:$B$457")


Selection.Copy 
Sheet9.Range("AK2").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range _
    ("AK2"), Unique:=True 

  ' Here's where I want the list of unique records 
  ' in Sheet1.Range("$B$15:$B$457") to appear

调试器突出显示以下一行:

代码语言:javascript
复制
Set ER = ActiveWorkbook.Sheets(9).Range("AJ2").Value

我试过:

代码语言:javascript
复制
Set ER = Sheet9.Range("AJ2").Value

代码语言:javascript
复制
Set ER = Worksheets("Helpers").Range("AJ2").Value

但我也犯了同样的错误。我觉得解决这个问题的方法会很简单,但我的想法已经用光了。我试过从其他问题中解决同样的错误,但似乎没有什么能解决我所面临的问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-15 18:20:55

ER是一个对象(范围)变量,因此您可以将范围分配给该变量。该值是变量的属性,因此您需要时访问该属性(Value是默认属性,因此您不需要严格指定它,但这样做是很好的做法)。不能将范围的值赋值给范围变量。

您还需要在下一行的引号之外取ER。

不确定为什么要尝试使用Select,所以仍然保留,但通常最好避免选择。

代码语言:javascript
复制
Sub x()

Dim ER As Range

'I want 'ER' to represent the value in AJ2

Set ER = ActiveWorkbook.Sheets(9).Range("AJ2")

'Here's where debugger highlights yellow

Worksheets("SA Payroll Dist Sheet").Range("$B$15:" & ER.Value).Select

  ' Is this even the proper way to refer to the range I am after?
  ' In this case, the range would be ("$B$15:$B$457")

Selection.Copy
Sheet9.Range("AK2").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range _
    ("AK2"), Unique:=True

End Sub
票数 1
EN

Stack Overflow用户

发布于 2017-12-15 19:37:18

谢谢SJR,你的评论和改变让我找到了一个可行的解决方案!

我不知道如何在注释部分发布代码,下面是我最后使用的内容:

代码语言:javascript
复制
Dim ER As Range
Set ER = Sheet9.Range("AJ2")
Sheet1.Range("$B$15:" & ER.Value).AdvancedFilter Action:=xlFilterCopy, 
CopyToRange:=Range _
    ("AK2"), Unique:=True

如您所见,我还在筛选器行中引用了错误的范围("AK2"),我现在也对此进行了更正("$B$15:“& ER.Value)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47836640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档