如果表名存在,则更改表名(VBA)

时间:2017-08-16 23:05:26

标签: excel vba excel-vba excel-2010

我创建了一个宏,它自动获取一系列单元格并将它们格式化为表格。

我已将默认表名设置为“Table11”,但由于Table11只能存在于工作簿中一次,如果我尝试多次运行宏,我将遇到错误。

有没有办法修改我的代码来说“如果table11存在,那么将名称更改为table12”?

我并不关心调用新表名的是什么,但我希望代码可以根据需要经常使用,这样如果已经使用了table11,请将其命名为table12。如果table12已被使用,请使用table13等...

这是我的代码:

Sub formatMacro()
Application.ScreenUpdating = False

ActiveCell.CurrentRegion.Select
ActiveSheet.ListObjects.Add(xlSrcRange, Selection, , xlYes).Name = "Table11"
Range("Table11[#All]").Select
ActiveSheet.ListObjects("Table11").TableStyle = "TableStyleLight9"
       With Selection
        .HorizontalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
ActiveSheet.ListObjects("Table11").ShowTableStyleColumnStripes = True
    Selection.Columns.AutoFit
    Selection.Rows.AutoFit
Application.ScreenUpdating = True

End Sub

1 个答案:

答案 0 :(得分:4)

无需为表命名。使用With ActiveSheet.ListObjects.Add(...)处理新添加的表格。

enter image description here

Sub CreateAndFormatTable()
    Application.ScreenUpdating = False

    With ActiveSheet.ListObjects.Add(xlSrcRange, ActiveCell.CurrentRegion, , xlYes)

        .TableStyle = "TableStyleLight9"
        With .Range
            .HorizontalAlignment = xlCenter
            .WrapText = False
            .Orientation = 0
            .AddIndent = False
            .IndentLevel = 0
            .ShrinkToFit = False
            .ReadingOrder = xlContext
            .MergeCells = False
        End With
        .ShowTableStyleColumnStripes = True
        .Range.Columns.AutoFit
        .Range.Rows.AutoFit
    End With

    Application.ScreenUpdating = True

End Sub