2015-05-12 149 views
1

我遇到了Excel VBA的问题。Excel VBA获取和使用表名称

我应该做一个简单的任务,将一个可变范围的单元格从“sheet2”复制/粘贴到“sheet1”中相同的范围内。

500我的代码中的行数太多了,但我试过这种方式,以“捕捉”变量方面。

棘手的部分是,“sheet1”中的范围是一个表(它是从TFS创建的)。

Sub CopyP() 


Sheets("Sheet1").Range("B3:F500").Value = Sheets("Sheet2").Range("B3:F500").Value 

SheetObject.ListObjects (ListObjectName) 
Range("NAME OF TABLE[Iteration Path]").SpecialCells(xlCellTypeBlanks).EntireRow.Delete 

End Sub 

的[迭代路径]是我的表的列名,我想在此列,检查/使用这个参数,如果“行”是空的。

我知道代码远没有好或干净,但表格给我一个很难复制。

有了这段代码,我得到了另一个问题:从TFS创建表,没有问题复制到,但表的名称是可变的(好像TFS创建名称),所以除非我手动放置名称在代码中,“程序”不能执行,因为缺少范围。

没有找到办法以某种方式获得表名的返回。

但我觉得我只是走错了路,总有人可能会把我带上正轨。

我的另一个想法是遍历表2中的行以获取尽可能多的数据,然后将它们迭代复制到表中。但我想我会在那里与表名相同的问题。

我发现使用谷歌的每一个信息,谈论用户可以“命名”表的表。在我的情况下,我不能,所以我必须使用TFS用于我的表的名称。

+0

从手机发帖,请忽略拼写错误。如果只有一个表,则可以通过循环访问listobject对象来获取名称。我现在无法获得excel,否则我会给你一个例子 –

+0

可悲的是我真的需要一个例子来理解它。如果你能在接下来的几天内给我一个,那将是非常棒的!编辑:是的,只有一个表。 –

回答

0

继我的评论下面你的问题,我只是在记事本中输入。请修改它以适应您的需要。

这将为您提供activesheet中所有表的名称。如果有多个表,那么你会得到多个名字。 (请勿通过电话发送)

Sub sample() 
    Dim objLB As ListObject, TableName As String 

    For Each objLB In ActiveSheet.ListObjects 
     TableName = objLB.Name 
     Exit For 
    Next 

    Range(TableName & "[Iteration Path]").SpecialCells(xlCellTypeBlanks).EntireRow.Delete 
End Sub 
+0

确定这个工程到目前为止,谢谢你!但我确实有最后一个问题。虽然调试我可以看到存储在objLB中的值,但是如果我尝试使用objLB:Range(“NAME OF TABLE [Iteration Path]”)。SpecialCells(xlCellTypeBlanks).EntireRow.Delete我仍然遇到范围错误。或者我使用了错误的变量? –

+0

那么你现在还有什么? –

+0

基本上我只想使用表的名称来删除它中的每一个空行。那是什么:Range(“表名[迭代路径]”)。SpecialCells(xlCellTypeBlanks).EntireRow.Delete,确实。 –

相关问题