下面的 excel sub 是一个过滤器,它根据条件行中的行过滤掉行。当范围设置为绝对数据时,代码运行良好。我想更改代码以获取存储为单元格值(间接引用)的引用的范围,但我找不到一种方法来调整我看到的其他代码片段,我想知道是否有人可以帮助我。我不是程序员。
问题在于,随着不时插入新数据,范围引用将移动并且数据的开头和相关联的过滤器在单元格中(使用 RC 表示法 14,14),数据在单元格 13,12 中。虽然我知道我不能在 vba 中使用间接函数,但我想知道是否有一种方法可以动态分配一个范围以便能够使用高级过滤器函数。我有代码来查找数据块的最后一列和最后一行。我已经尝试了以下代码(2 次尝试),但它不会让我以这种方式使用该对象 我曾尝试将单元格引用创建为字符串,然后使用 range 函数对其进行分配。然后我阅读了一个答案,其中有人将单元格的值直接放入范围函数中,并且对他们有用(他们正在复制单元格)。两次尝试大致相同,但在第二次尝试中,我试图更具体。问题似乎是,一旦我从范围语句中的绝对引用“A50”更改为范围不再有效。我不确定如何解决这个问题,也许不可能
知道被过滤的数据是姓名和电话数据行以及显示出勤率的计数系统(一年中每周一列)可能会有所帮助 具有动态数据的单元格以 A1 而非 RC 格式保存它们
Sub UseAdvancedFilterInPlace()
'This version of the sub has absolute references and works perfectly
Dim rdData As Range
Dim rgcriteria As Range
Call TurnOffStuff
Set rgData = Sheet9.Range(“A50”).CurrentRegion
Set rgcriteria = Sheet9.Range(“A46”).CurrentRegion
rgData.AdvancedFilter xlFilterInPlace, rgcriteria
Call TurnOnStuff
End Sub
Sub UseAdvancedFilterInPlace()
'This version of the sub has dynamic references and fails
Dim rdData As Range
Dim rgcriteria As Range
Call TurnOffStuff
Dim Top_of_data As String
Dim Top_of_Criteria As String
Dim My_range As Range
‘Attempt 1
'Set rgData = Range(Sheet9.Cells(13, 12).Value).CurrentRegion
'Set rgcriteria = Range(Sheet9.Cells(14, 14).Value).CurrentRegion
'Attempt 2
Set rgData = Sheet9.Range(Sheet9.Range(Cells(13, 12)).Value).CurrentRegion
Set rgcriteria = Sheet9.Range(Sheet9.Range(Cells(14, 14)).Value).CurrentRegion
rgData.AdvancedFilter xlFilterInPlace, rgcriteria
Call TurnOnStuff
End Sub
我得到的实际错误消息是应用程序定义或对象定义的错误
这对我有用。
Set rdData = Sheet9.Range(Sheet9.Range("L13").Value).CurrentRegion
Set rgcriteria = Sheet9.Range(Sheet9.Range("N15").Value).CurrentRegion
鉴于这Range("L13").Value
是A50和Range("N15").Value
A46。
额外:Option Explicit
在每个模块的第一行中使用语句,在每个子或函数之外。此选项会在未声明的变量上引发错误,并将帮助您避免重命名变量上的错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句