VBA的表格格式。

我有sheet1,sheet2,sheet3,sheet4。

在4张表中,工作表1和工作表2有列表中的数据。 而sheet3和sheet4也有相同的数据透视表。

我想有一个VBA,在我的工作簿中,如果它find带有列表的表格,那么它将把它格式化为表格。 该表应该只适用于它有价值的单元格。

我使用loggingmacros来获取代码,但是我很惊讶我应该如何为我的所有表单实现它。 代码,从一张纸的loggingmacros:

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

通常,当我从数据源复制,它就像下面的图像

我想要一个VBA,像这样改变上图,而不需要手动操作。

我认为你的意思是像下面的代码:

 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 

如果你的问题是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