Excel VBA获取和使用表格名称

3
我遇到了一个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会创建名称),所以除非我在代码中手动输入名称,否则“程序”无法执行,因为缺少范围。
我找不到任何方法可以返回表格名称。
但是我认为我可能走了错误的路,希望有人能给我指点正确的方向。
我的另一个想法是通过Sheet 2中的行进行迭代,获取所需数量的数据,然后进行迭代将它们复制到表格中。但我想我会遇到同样的表格名称问题。
我找到的所有谷歌搜索结果都是关于用户可以“命名”表格的情况。在我的情况下,我不能这样做,所以我必须使用TFS为我的表格使用的名称来工作。

手机发布,请忽略拼写错误。如果只有一个表格,那么可以通过循环列表对象来获取名称。我现在无法访问Excel,否则我会给你一个例子。 - Siddharth Rout
很遗憾,我真的需要一个例子来理解它。如果你能在接下来的几天内给我一个例子,那就太棒了!编辑:是的,只有一个表格。 - mps.declade
1个回答

3

根据您提问下面的评论,我刚才在记事本中输入了这个。请您根据需要进行修改。

这会列出活动工作表中所有表格的名称。如果有多个表格,则会列出多个名称。(由于我是通过手机发布此文,未经测试)

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

那么你现在还有什么其他问题吗? - Siddharth Rout
基本上,我只想使用表格的名称来删除其中的每一行空行。这就是下面这段代码所实现的功能:Range("NAME OF TABLE[Iteration Path]").SpecialCells(xlCellTypeBlanks).EntireRow.Delete。 - mps.declade
http://wikisend.com/download/914120/exceltotfs.xlsm ........ 我在新表格中犯了一个小错误。列ID必须在A列而不是B列。我猜这对问题没有影响,但只是说一下。 - mps.declade
我回来后会查看代码,但我希望你在代码中正确使用了 objLB?例如 Range(objLB.Name & "[Iteration Path]").SpecialCells(xlCellTypeBlanks).EntireRow.Delete - Siddharth Rout
是的,我尝试了两种方法:Range(objLB.Name ……)和Range(objLB……)。只是为了确保我没有错过什么。 - mps.declade
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接