【问题标题】:Delete table name in Excel VBA在 Excel VBA 中删除表名
【发布时间】:2017-08-15 08:54:10
【问题描述】:

我想使用 Excel VBA 删除/删除我的表的名称,即“Table2”。我知道如何手动删除名称,但我不知道如何将名称“Table2”设置为 VBA 中的名称。我发现了有关此主题的其他问题,但这些代码删除了所有命名范围,我只想删除名为“Table2”的表。

这是我的代码不起作用:

Sub Delete_Name_Table()

   Dim n As Name

   n = "Table2"

   n.Delete

End Sub

有谁知道如何将 n 正确设置为“Table2”?

谢谢!

【问题讨论】:

  • 您的意思是命名范围吗?或表格,在 VBA 中称为 ListObject
  • 到被列为 ListObject 的表
  • 您要更改名称吗?还是删除整个表(连同它的数据)?
  • 删除名称,而不是数据

标签: vba excel


【解决方案1】:

您可以从表中备份数据,删除表和恢复数据。

Sub test()
    Dim rng As Range
    Dim rngVals As Variant

    Set rng = YourSheet.ListObjects("Table2").Range
    rngVals = rng.Value

    YourSheet.ListObjects("Table2").Delete

    rng.Value = rngVals

    Set rng = Nothing
End Sub

【讨论】:

  • 这确实恢复了我的数据并且只删除了名称“Table2”,我确实必须使用 ListObjects。谢谢!
  • @Tox 很高兴我能帮上忙
  • 我可以删除命名表的内容并保留列名吗?
【解决方案2】:

我希望我理解了你的帖子,并且你想要类似下面的代码:

Option Explicit

Sub Delete_Name_Table()

Dim Sht As Worksheet
Dim Tbl As ListObject

Set Sht = Worksheets("Sheet1") ' <-- change to your sheet that has the table

' set the Table Object
Set Tbl = Sht.ListObjects("Table2")
Tbl.Name = " " ' clear the name, you need to give it some kind of name

End Sub

【讨论】:

    【解决方案3】:

    有一个很好的方法来制作一个范围的表格。因此,名称会自动删除,但值会保留。像这样:

    Public Sub TestMe()
    
        Dim tblN        As Object
        Dim rngRange    As Range
    
        For Each tblN In ActiveSheet.ListObjects
            Debug.Print tblN
    
            If tblN = "Tabelle16" Then
                tblN.Unlist
            End If
    
        Next tblN
    
    End Sub
    

    如果你也想删除其中的数据,这里是代码:

    Public Sub TestMe()
    
        Dim n As String
        n = "Tabelle2"
        Range(n).Delete
    
    End Sub
    

    它会将n 设置为一个表名并将其删除。

    【讨论】:

    • 谢谢,这确实会删除范围和数据,但我正在寻找仅删除表名称的代码。该表是使用 ListObject 设置的。
    猜你喜欢
    • 1970-01-01
    • 2019-01-10
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    • 2011-12-12
    • 2017-07-24
    • 2013-01-27
    • 2013-06-17
    相关资源
    最近更新 更多