将范围格式化为表格

时间:2021-06-10 17:38:20

标签: excel vba

我有一组长度变化的数据。我想做一个做各种事情的宏,包括把整个数据集做成一个表格?

使用 Selection.End(xlToRight) 和 xlToDown 来选择数据是有效的,但是当录制的宏将其转换为表格时,它只会在选定的范围内执行。

这是记录功能给我的:

Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$H$26095"), , xlYes).Name _
    = "Table1"
Range("Table1[#All]").Select

有没有办法根据上面的范围选择使范围动态化?

1 个答案:

答案 0 :(得分:0)

范围到表

  • 如果您已经添加了表格,或者表格与另一个表格重叠等,则会出现各种错误。因此,我添加了一个过程,用于删除包含此代码的工作簿中工作表 Sheet1 中的所有表格。
Option Explicit

Sub RangeToTable()
    Dim wb As Workbook: Set wb = ThisWorkbook ' workbook containing this code
    Dim ws As Worksheet: Set ws = wb.Worksheets("Sheet1")
    Dim rg As Range: Set rg = ws.Range("A1").CurrentRegion
    Dim tbl As ListObject
    Set tbl = ws.ListObjects.Add(xlSrcRange, rg, , xlYes)
    tbl.Name = "Table1"
End Sub

Sub DeleteAllTables()
    Dim wb As Workbook: Set wb = ThisWorkbook ' workbook containing this code
    Dim ws As Worksheet: Set ws = wb.Worksheets("Sheet1")
    Dim tbl As ListObject
    For Each tbl In ws.ListObjects
        tbl.Delete
    Next tbl
End Sub

如果你想“坚持你的枪”(不推荐),你可以使用以下单线:

ActiveSheet.ListObjects.Add(xlSrcRange, _
    Range("A1").CurrentRegion, , xlYes).Name = "Table1"

无需选择任何内容。

相关问题