在不同的表上使用一个宏,分别为

目标在不同的表上使用一个宏,分别为

一个按钮,用于根据单元格值对表执行自动筛选。

问题

当复制片,宏指表上的原始片。

目前代码

Sub Macro1() 

ActiveSheet.ListObjects("Table33").Range.AutoFilter Field:=6, Criteria1:=">" & Range("K9").Value

End Sub

是否有以相对的方式分配表的方法吗?表格总是出现在同一个单元格中,一张张一张。

回答:

我有3个例子给你,第一个找到你指定单元格的表格。在这种情况下,您需要将TableName = ActiveSheet.Range("D6").ListObject.Name中的D6更改为表格内的单元格。找到表后,它在该表上运行过滤器。如果没有找到表格,所有3个示例都会抛出一个消息框,如果不需要,可以对其进行注释或删除。你应该能够将你的按钮绑定到3中的任何一个并使用它。

我发现代码找到表here并修改它以使用您提供的代码。

Sub RangeTable() 

Dim TableName As String

Dim ActiveTable As ListObject

'Determine if ActiveCell is inside a Table

On Error GoTo NoTableSelected

TableName = ActiveSheet.Range("D6").ListObject.Name 'Change range to cell inside of table

Set ActiveTable = ActiveSheet.ListObjects(TableName)

On Error GoTo 0

'Do something with your table variable (ie Add a row to the bottom of the ActiveTable)

ActiveTable.Range.AutoFilter Field:=6, Criteria1:=">" & Range("K9").Value

Exit Sub

'Error Handling

NoTableSelected:

MsgBox "There is no Table currently selected!", vbCritical

End Sub

下面的代码会看着你当前所选择的小区,找到与它关联的表,然后运行使用该表中的过滤器。

Sub ActiveTable() 

Dim SelectedCell As Range

Dim TableName As String

Dim ActiveTable As ListObject

Set SelectedCell = ActiveCell

'Determine if ActiveCell is inside a Table

On Error GoTo NoTableSelected

TableName = SelectedCell.ListObject.Name

Set ActiveTable = ActiveSheet.ListObjects(TableName)

On Error GoTo 0

'Do something with your table variable (ie Add a row to the bottom of the ActiveTable)

ActiveTable.Range.AutoFilter Field:=6, Criteria1:=">" & Range("K9").Value

Exit Sub

'Error Handling

NoTableSelected:

MsgBox "There is no Table currently selected!", vbCritical

End Sub

另一种方法是下面这只是运行上的ActiveSheet找到的第一个表中的过滤器,如果你只是有一个表,然后这应该工作正常的代码。有了这个,你不需要在运行它之前选择表格中的单元格,但是如果每张表格有多个表格,则可能需要使用上述代码。

Sub SheetTable() 

Dim TableName As String

Dim ActiveTable As ListObject

'Determine if ActiveCell is inside a Table

On Error GoTo NoTableSelected

TableName = ActiveSheet.ListObjects.Item(1)

Set ActiveTable = ActiveSheet.ListObjects(TableName)

On Error GoTo 0

'Do something with your table variable (ie Add a row to the bottom of the ActiveTable)

ActiveTable.Range.AutoFilter Field:=6, Criteria1:=">" & Range("K9").Value

Exit Sub

'Error Handling

NoTableSelected:

MsgBox "There is no Table currently selected!", vbCritical

End Sub

以上是 在不同的表上使用一个宏,分别为 的全部内容, 来源链接: utcz.com/qa/257824.html

回到顶部