首页 > 解决方案 > VBA:由固定单元格和活动单元格定义的范围

问题描述

我正在尝试使用宏将数据格式化为表格。无论占用的行数和列数如何,它都需要工作,

我尝试了以下方法,导致错误:

Sub Macro1()
Set **selectedCell** = Application.ActiveCell
    Range(Selection, Selection.End(xlUp)).Select
    Range(Selection, Selection.End(xlToLeft)).Select
    Application.CutCopyMode = False
    ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:**selectedCell**"), , xlYes).Name = _
        "Table1"
    Range("Table1[#All]").Select
    ActiveSheet.ListObjects("Table1").TableStyle = "TableStyleLight8"
    Cells.Select
End Sub

任何想法如何解决这一问题?

提前致谢。

标签: excelvbarange

解决方案


您无需在代码中进行选择

您可以使用CurrentRegion-ActiveCell它已经返回一个范围 - 所以不需要像 Nathan_sav 建议的那样使用地址。

此外ListObjects.Add返回一个ListObject- 您可以使用它来设置其他属性。

Dim lo As ListObject
Set lo = ActiveSheet.ListObjects.Add(xlSrcRange, ActiveCell.CurrentRegion, , xlYes)

With lo
    .Name = "Table1"
    .TableStyle = "TableStyleLight8"
End With


推荐阅读