【问题标题】:VBA for Table Formatting.用于表格格式的 VBA。
【发布时间】:2017-06-27 11:33:13
【问题描述】:

我有 sheet1、sheet2、sheet3、sheet4。

在 4 张工作表中,工作表 1 和工作表 2 在列表中有数据。并且 sheet3 和 sheet 4 具有相同的数据透视表。

我想要一个 VBA,这样,在我的工作簿中,如果它找到带有列表的表格,那么它应该将其格式化为表格。该表应仅适用于它具有价值的单元格。

我使用记录宏来获取代码,但我很惊讶应该如何为我的所有表格实现它。 代码,来自一张纸的记录宏:

sub macro()
  Cells.Select
    ActiveSheet.ListObjects.Add(xlSrcRange, Range("$1:$1048576"), , xlYes).Name = _
        "Table2"
    Cells.Select
    ActiveSheet.ListObjects("Table2").TableStyle = "TableStyleLight9"
End Sub

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    我认为您的意思类似于下面的代码:

    Option Explicit
    
    Sub macro()
    
    Dim ws As Worksheet
    Dim ListObj As ListObject
    
    For Each ws In ThisWorkbook.Worksheets
        With ws
            For Each ListObj In .ListObjects
                ListObj.TableStyle = "TableStyleLight9"
            Next ListObj
        End With
    Next ws
    
    End Sub
    

    【讨论】:

    • 这很酷,但我只需要占用的行和列而不是整个工作表?将来如果我额外添加一行,那么它应该采用那个
    • 如果我没记错的话,上面的代码应该适用于任何工作表吧?
    • @Mikz ThisWorkbook 中的任何工作表(代码所在的工作簿)
    • 我之前要求我的工作簿学生,现在我在其他工作簿教师中使用了相同的代码。在这两个工作簿中,我都有“此工作簿”中的代码,在这种情况下它应该可以正常工作
    • 我们没有给出任何表名,那么它是如何工作的?在相同的代码中,对于一张表,我给出了表格名称并且它有效吗?这就是为什么想出这个问题。
    【解决方案2】:

    如果您的问题是将范围更改为 Listobject,请查看以下代码。

    Sub macro()
        Dim Ws As Worksheet
        Dim LstObj As ListObject
        Dim rngDB As Range, n As Integer
    
        For Each Ws In Worksheets
            With Ws
                Set rngDB = .Range("a1").CurrentRegion
                For Each LstObj In Ws.ListObjects
                    LstObj.Unlist
                Next
                If WorksheetFunction.CountA(rngDB) > 0 Then
                    n = n + 1
                    Set LstObj = .ListObjects.Add(xlSrcRange, rngDB, , xlYes)
                    With LstObj
    
                        .Name = "Table" & n
                        .TableStyle = "TableStyleLight9"
                    End With
                End If
            End With
        Next Ws
    
    End Sub
    

    【讨论】:

    • 您的代码仅包含范围 ryt ?没有格式化表格?
    猜你喜欢
    • 2020-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多