在VBA中引用活动表

时间:2016-05-13 17:06:05

标签: excel-vba excel-2007 vba excel

我正在创建一个宏来操作excel中的表。我已经能够创建代码来完成我需要的工作,问题是,我的表名可能并不总是相同。

举个例子:

Range("DATA_INPUT4[MFG Catalog]").Copy

此代码很好地复制了我的表格中的MFG目录列,但该表格并不总是命名为" DATA_INPUT4"。

我已经玩了几件事情试图让它与活动表一起工作,我觉得我很接近,但我无法取得任何进展。 我试过了:

Sub Copy_Active_Table()

Dim activeTable As String

activeTable = ActiveSheet.ListObjects(1).Name

MsgBox activeTable 'To make sure it's pulling the correct table name

Range("activeTable[MFG Catalog]").Copy

End Sub

这可能是完全错误的,但你可以看到我在哪里。

我有一种感觉,我必须Dim activeTable As ListObject,但我还没有能够解决这个问题。

这个看似简单的问题让我疯了,任何帮助都会很棒。

谢谢,

布赖恩

2 个答案:

答案 0 :(得分:1)

在评论中回答,

  

确实,你非常接近。试试这个:Range(activeTable & "[MFG Catalog]").Copy

拉​​尔夫

谢谢,拉尔夫。

答案 1 :(得分:0)

只是有一个类似的问题,然后就到这里了。 按照@choukkos的回答,您还可以使用ListObject的属性(它甚至更快一点,因为它不需要进行两次名称解析)

ActiveCell.ListObject.ListColumns("MFG Catalog").DataBodyRange.Copy

同样可以提取其他表格数据...

Set t = ActiveCell.ListObject
'copy line 3 of the table
t.ListRows(3).Range.Copy
'select current line
t.ListRows(Selection.Row - t.Range.Row).Range.Select