【问题标题】:Excel Macro - Select all cells with data and format as tableExcel 宏 - 选择所有具有数据和格式的单元格为表格
【发布时间】:2014-02-04 16:27:49
【问题描述】:

是否可以编写一个宏来格式化任何活动选择的表格?例如,我有一个宏,它基本上只会执行 Ctrl+Shift+End 范围选择。之后,我希望宏能够将所选范围格式化为表格,但是当我在 VBA 中记录此操作时,它将使用范围地址,这在工作表之间并不总是相同的。

Sub A_SelectAllMakeTable()
Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$AO$2959"), , xlYes).Name _
    = "Table1"
Range("A1:AO2959").Select
ActiveSheet.ListObjects("Table1").TableStyle = "TableStyleMedium15"
End Sub

提前致谢。

【问题讨论】:

  • 总是从A1开始吗?
  • 你应该看到这个,它会帮助你理解一些重要的概念:Excel macro - Avoiding using Select。当然,在您的特定情况下,您从选择开始,但您应该将其放入变量中。
  • 就像@pnuts说的这已经是宏的一部分了,他们甚至包括了Ctrl + L的热键,你甚至不需要选择整个范围,只需选择要作为表格的范围中的任何单元格。
  • 感谢您的建议(我不知道快捷方式)但是,工作表中有一些空白单元格,即使数据超出了这些单元格,Ctrl + L 也会在这些单元格处结束。

标签: vba excel


【解决方案1】:

试试这个当前的选择:

Sub A_SelectAllMakeTable2()
    Dim tbl As ListObject
    Set tbl = ActiveSheet.ListObjects.Add(xlSrcRange, Selection, , xlYes)
    tbl.TableStyle = "TableStyleMedium15"
End Sub

或等效的宏(用于 Ctrl+Shift+End 范围选择):

Sub A_SelectAllMakeTable()
    Dim tbl As ListObject
    Dim rng As Range

    Set rng = Range(Range("A1"), Range("A1").SpecialCells(xlLastCell))
    Set tbl = ActiveSheet.ListObjects.Add(xlSrcRange, rng, , xlYes)
    tbl.TableStyle = "TableStyleMedium15"
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 2014-01-22
    相关资源
    最近更新 更多