excel 将范围格式化为表格

jaql4c8m  于 2023-04-13  发布在  其他
关注(0)|答案(1)|浏览(173)

我有一组数据,在长度上的变化。我想做一个宏,做各种事情,包括使整个数据集表?
使用Selection.End(xlToRight)和xlToDown来选择数据是有效的,但是当录制的宏将其转换为表时,它只对选定的范围进行转换。
下面是record函数给我的:

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

有没有一种方法可以根据上面的范围选择使范围动态化?

a64a0gku

a64a0gku1#

Range到Table

  • 如果您已经添加了表,或者表与另一个表重叠,则会发生各种错误。因此,我添加了一个过程,删除包含此代码的工作簿中工作表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"

不需要选择任何内容。

相关问题