我正在尝试创建一个循环过程,该过程遍历多个工作表并将数据转换为表。我认为我的代码不断破解,因为显然每个数组只能有一个" Table1"的实例。我有几个问题:
1:有没有办法动态命名每个表。例如:将表的名称设置为工作表标题?
2:如果已有现有表,如何创建退出子例程的错误处理代码。 EX。我已经在现有的工作簿上运行了这个,但是添加了一个包含原始数据的新工作表,但仍然需要将其转换为表格。
以下是我到目前为止所得到的任何和所有帮助(VBA新手)
Sub newTables()
' newTables Macro
' T
'
' Keyboard Shortcut: Ctrl+Shift+T
Dim rngSelectionRange As Range
Set rngSelectionRange = ActiveSheet.Range(Selection.Address)
For i = 1 To Worksheets.Count
Worksheets(i).Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
'where it breaks
ActiveSheet.ListObjects.Add(xlSrcRange, rngSelectionRange, , xlYes).Name = "Table1"
'Range("Table1[#All]").Select
'ActiveSheet.ListObjects("Table1").TableStyle = "TableStyleLight2"
'ActiveSheet.ListObjects("Employ").Name = "Employee_Data"
If ActiveSheet.ListObjects.Count > 1 Then
End If
Next i
End Sub
答案 0 :(得分:1)
我认为这基本上就是你想要的。你可以检查一个范围是否有一个ListObject,这在这里很方便:
Sub AddTablesIfNone()
Dim ws As Excel.Worksheet
For Each ws In ActiveWorkbook.Worksheets
With ws
If .UsedRange.ListObject Is Nothing Then
.ListObjects.Add SourceType:=xlSrcRange, Source:=.UsedRange, xllistobjecthasHeaders:=xlYes
End If
End With
Next ws
End Sub
答案 1 :(得分:0)
怎么样:
ActiveSheet.ListObjects.Add(xlSrcRange, rngSelectionRange, , xlYes).Name = "Table" & i
这将命名循环Table1
中的第一个表,然后Table2
等。
或者,如果您需要工作表的名称,请将"Table" & i
替换为:Worksheets(i).Name
,但也许您要添加一个前缀say," Table"只是为了避免混淆。