Excel 带动态字段列的VBA自动过滤器
我为“按选定单元格值筛选”编写了一个代码,以创建一个快速访问工具栏图标并加快筛选速度。当过滤器在A列中启动时,它工作得非常好。但有些过滤器在B列或C列中启动。。。然后在另一列中过滤该值,跳转的空白列数与没有过滤器的空白列数完全相同。你们知道怎么修吗?如何让VBA返回字段号Excel 带动态字段列的VBA自动过滤器,excel,vba,autofilter,Excel,Vba,Autofilter,我为“按选定单元格值筛选”编写了一个代码,以创建一个快速访问工具栏图标并加快筛选速度。当过滤器在A列中启动时,它工作得非常好。但有些过滤器在B列或C列中启动。。。然后在另一列中过滤该值,跳转的空白列数与没有过滤器的空白列数完全相同。你们知道怎么修吗?如何让VBA返回字段号 Sub Filtro_Valor_Célula() 'Filtra a coluna pelo valor da célula selecionada ' Valor = ActiveCell.Value
Sub Filtro_Valor_Célula()
'Filtra a coluna pelo valor da célula selecionada
'
Valor = ActiveCell.Value
ActiveSheet.Range(ActiveSheet.AutoFilter.Range.Address).AutoFilter Field:=ActiveCell.Column, Criteria1:=Valor
End Sub
我很难理解你的问题,但我认为你的情况如下: 在本例中,如果给定的代码运行,我们将对列E而不是列C进行筛选 这是因为选定的单元格位于第3列中。但是我们要筛选的字段不是自动筛选中的第三个字段,而是自动筛选中的第一个字段。看起来代码
字段:=ActiveCell.Column
的位对我们来说做得不对
请尝试以下方法:
Sub Filtro_Valor_Célula()
'Filtra a coluna pelo valor da célula selecionada
'
Valor = ActiveCell.Value
FieldToFilter= ActiveCell.Column - ActiveSheet.AutoFilter.Range.Column + 1
ActiveSheet.Range(ActiveSheet.AutoFilter.Range.Address).AutoFilter Field:=FieldToFilter, Criteria1:=Valor
End Sub
这里我们获取所选列(ActiveCell.column)的位置,并减去自动筛选开始的列号。我们想从1开始计数,而不是从零开始,所以我们需要在结果中加1
希望能有帮助