我正在创建一个宏来操作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
,但我还没有能够解决这个问题。
这个看似简单的问题让我疯了,任何帮助都会很棒。
谢谢,
布赖恩
答案 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