需要对象 - 尝试将值设置为范围时出现 424 错误
Object Required - 424 Error when trying to set value to a range
我正在尝试获取单元格的引用位置(可以轻松更改)并在过滤后的唯一记录列表中引用该位置,该列表会在用户初始化用户窗体时自动更新。
在 Sheet 9(助手)单元格 AI2 returns Sheet 1(SA 薪资区 Sheet)上的单元格的绝对位置。 AI2 包含以下公式:
=CELL("address",INDEX('SA Payroll Dist Sheet'!B:B,MATCH(Helpers!AH2,'SA Payroll Dist Sheet'!B:B,0)))
然后单元格 AJ2 使用以下方法查看 AI2 中值的最后一位:
=RIGHT(AI2,6)
这个正确returns值
$B$547(这是我想要的单元格引用)
这是我尝试初始化用户窗体时发生的情况:
运行-时间错误'424':
需要对象
对于以下内容:
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:ER").Select
' Is this even the proper way to refer to the range I am after?
' In this case, the range would be ("$B:$B7")
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:$B7") to appear
调试器突出显示以下行:
Set ER = ActiveWorkbook.Sheets(9).Range("AJ2").Value
我试过:
Set ER = Sheet9.Range("AJ2").Value
和
Set ER = Worksheets("Helpers").Range("AJ2").Value
但我得到了同样的错误。我觉得解决这个问题的方法会非常简单,但我 运行 没有想法。我已经尝试过其他问题的解决方案,但似乎无法解决我遇到的问题。
ER 是一个对象(范围)变量,因此您将范围分配给变量。该值是变量的 属性,因此您可以在需要时访问该 属性(值是默认值 属性,因此您不需要严格指定它,但这是一个好习惯这样做)。您不能将范围的值分配给范围变量。
您还需要将 ER 放在下一行的引号外。
不确定你为什么要尝试使用 Select/Copy,所以已经离开了,但通常最好避免 Select。
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:" & 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:$B7")
Selection.Copy
Sheet9.Range("AK2").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range _
("AK2"), Unique:=True
End Sub
谢谢 SJR,您的评论和修改使我找到了可行的解决方案!
我不知道如何 post 评论部分的代码,所以这就是我最终使用的代码:
Dim ER As Range
Set ER = Sheet9.Range("AJ2")
Sheet1.Range("$B:" & ER.Value).AdvancedFilter Action:=xlFilterCopy,
CopyToRange:=Range _
("AK2"), Unique:=True
如您所见,我还在筛选行中引用了错误的范围 ("AK2"),现在我也已更正了 ("$B$15:" & ER.Value)
我正在尝试获取单元格的引用位置(可以轻松更改)并在过滤后的唯一记录列表中引用该位置,该列表会在用户初始化用户窗体时自动更新。
在 Sheet 9(助手)单元格 AI2 returns Sheet 1(SA 薪资区 Sheet)上的单元格的绝对位置。 AI2 包含以下公式:
=CELL("address",INDEX('SA Payroll Dist Sheet'!B:B,MATCH(Helpers!AH2,'SA Payroll Dist Sheet'!B:B,0)))
然后单元格 AJ2 使用以下方法查看 AI2 中值的最后一位:
=RIGHT(AI2,6)
这个正确returns值
$B$547(这是我想要的单元格引用)
这是我尝试初始化用户窗体时发生的情况:
运行-时间错误'424': 需要对象
对于以下内容:
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:ER").Select
' Is this even the proper way to refer to the range I am after?
' In this case, the range would be ("$B:$B7")
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:$B7") to appear
调试器突出显示以下行:
Set ER = ActiveWorkbook.Sheets(9).Range("AJ2").Value
我试过:
Set ER = Sheet9.Range("AJ2").Value
和
Set ER = Worksheets("Helpers").Range("AJ2").Value
但我得到了同样的错误。我觉得解决这个问题的方法会非常简单,但我 运行 没有想法。我已经尝试过其他问题的解决方案,但似乎无法解决我遇到的问题。
ER 是一个对象(范围)变量,因此您将范围分配给变量。该值是变量的 属性,因此您可以在需要时访问该 属性(值是默认值 属性,因此您不需要严格指定它,但这是一个好习惯这样做)。您不能将范围的值分配给范围变量。
您还需要将 ER 放在下一行的引号外。
不确定你为什么要尝试使用 Select/Copy,所以已经离开了,但通常最好避免 Select。
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:" & 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:$B7")
Selection.Copy
Sheet9.Range("AK2").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range _
("AK2"), Unique:=True
End Sub
谢谢 SJR,您的评论和修改使我找到了可行的解决方案!
我不知道如何 post 评论部分的代码,所以这就是我最终使用的代码:
Dim ER As Range
Set ER = Sheet9.Range("AJ2")
Sheet1.Range("$B:" & ER.Value).AdvancedFilter Action:=xlFilterCopy,
CopyToRange:=Range _
("AK2"), Unique:=True
如您所见,我还在筛选行中引用了错误的范围 ("AK2"),现在我也已更正了 ("$B$15:" & ER.Value)