创build新工作表并在其中创build表

我想要创build新的工作表,命名新的工作表,向工作表添加列,然后在每个新的电子表格中创build一个表格,所有这些工作表都在一张工作簿中,并且只有一张工作表。 我的代码不起作用,但看看我到目前为止:

Sub Create_Sheets() Sheets.Add.Name = "VA_NAME" Sheets.Add.Name = "VA_VALUE" Sheets.Add.Name = "CE_NAME" Sheets.Add.Name = "CE_VALUE" Dim Table As ListObject Set Table = Sheet1.ListObjects("VA_NAME") Table.ListColumns.Add 1 Table.HeaderRowRange(1) = "SOURCE_SEQ_NBR" Table.ListColumns.Add 2 Table.HeaderRowRange(2) = "L1_PARCEL_NBR" Table.ListColumns.Add 3 Table.HeaderRowRange(3) = "L1_ATTR_TEMP_NAME" Table.ListColumns.Add 4 Table.HeaderRowRange(4) = "L1_ATTR_NAME" Table.ListColumns.Add 5 Table.HeaderRowRange(5) = "L1_ATTR_VALUE" Set Table = Sheet1.ListObjects("VA_VALUE") Table.ListColumns.Add 1 Table.HeaderRowRange(1) = "SOURCE_SEQ_NBR" Table.ListColumns.Add 2 Table.HeaderRowRange(2) = "L1_PARCEL_NBR" Table.ListColumns.Add 3 Table.HeaderRowRange(3) = "L1_ATTR_TEMP_NAME" Table.ListColumns.Add 4 Table.HeaderRowRange(4) = "L1_ATTR_NAME" Table.ListColumns.Add 5 Table.HeaderRowRange(5) = "L1_ATTR_VALUE" Set Table = Sheet1.ListObjects("CE_NAME") Table.ListColumns.Add 1 Table.HeaderRowRange(1) = "SOURCE_SEQ_NBR" Table.ListColumns.Add 2 Table.HeaderRowRange(2) = "L1_PARCEL_NBR" Table.ListColumns.Add 3 Table.HeaderRowRange(3) = "L1_ATTR_TEMP_NAME" Table.ListColumns.Add 4 Table.HeaderRowRange(4) = "L1_ATTR_NAME" Table.ListColumns.Add 5 Table.HeaderRowRange(5) = "L1_ATTR_VALUE" Set Table = Sheet1.ListObjects("CE_VALUE") Table.ListColumns.Add 1 Table.HeaderRowRange(1) = "SOURCE_SEQ_NBR" Table.ListColumns.Add 2 Table.HeaderRowRange(2) = "L1_PARCEL_NBR" Table.ListColumns.Add 3 Table.HeaderRowRange(3) = "L1_ATTR_TEMP_NAME" Table.ListColumns.Add 4 Table.HeaderRowRange(4) = "L1_ATTR_NAME" Table.ListColumns.Add 5 Table.HeaderRowRange(5) = "L1_ATTR_VALUE" Columns.AutoFit 

我宁愿代码识别表单名称(即“VA_NAME”),而不是“Sheet2,Sheet3”等。 我知道“Set Table = Sheet1.ListObjects(”VA_NAME“)远远不止是我的问题,因为这依赖于”表单(X)“约定,但是表单(”VA_NAME“),ListObjects不起作用。 有没有快速解决这个问题,还是我对VBA的规则?

谢谢,所有!

更新:我发现我的发布的代码假定表已经存在,情况并非如此。 我添加了新的代码来创build实际的表,但没有命名的列:

 Sheet2.ListObjects.Add(xlSrcRange, Range("$A$1"), , xlNo).Name = "VA_NAME" Sheet3.ListObjects.Add(xlSrcRange, Range("$A$1"), , xlNo).Name = "VA_VALUE" Sheet4.ListObjects.Add(xlSrcRange, Range("$A$1"), , xlNo).Name = "CE_NAME" Sheet5.ListObjects.Add(xlSrcRange, Range("$A$1"), , xlNo).Name = "CE_VALUE" 

我的操作顺序应该是创build命名表 – >创build命名列 – >从列创build表。

虽然我怀疑这是用命名表和列创build命名表的最直观的方法,但这是我所做的(我仍然对build议非常开放):

 Sub Create_Sheets() Sheets.Add.Name = "VA_NAME" Sheets.Add.Name = "VA_VALUE" Sheets.Add.Name = "CE_NAME" Sheets.Add.Name = "CE_VALUE" 

结束小组

Sub Create_PARCEL_ATTR_Tables()

 Sheets("VA_NAME").Select Sheet2.ListObjects.Add(xlSrcRange, Range("$A$1:$E$1"), , xlNo).Name = "VA_NAME" Sheets("VA_VALUE").Select Sheet3.ListObjects.Add(xlSrcRange, Range("$A$1:$E$1"), , xlNo).Name = "VA_VALUE" Sheets("CE_NAME").Select Sheet4.ListObjects.Add(xlSrcRange, Range("$A$1:$E$1"), , xlNo).Name = "CE_NAME" Sheets("CE_VALUE").Select Sheet5.ListObjects.Add(xlSrcRange, Range("$A$1:$E$1"), , xlNo).Name = "CE_VALUE" 

结束小组

Sub Create_PARCEL_ATTR_COLUMNS()

 Sheets("VA_NAME").Range("A1").Value = "SOURCE_SEQ_NBR" Sheets("VA_NAME").Range("B1").Value = "L1_PARCEL_NBR" Sheets("VA_NAME").Range("C1").Value = "L1_ATTRIB_TEMP_NAME" Sheets("VA_NAME").Range("D1").Value = "L1_ATTRIB_NAME" Sheets("VA_NAME").Range("E1").Value = "L1_ATTRIB_VALUE" Sheets("VA_NAME").Columns.AutoFit Sheets("VA_VALUE").Range("A1").Value = "SOURCE_SEQ_NBR" Sheets("VA_VALUE").Range("B1").Value = "L1_PARCEL_NBR" Sheets("VA_VALUE").Range("C1").Value = "L1_ATTRIB_TEMP_NAME" Sheets("VA_VALUE").Range("D1").Value = "L1_ATTRIB_NAME" Sheets("VA_VALUE").Range("E1").Value = "L1_ATTRIB_VALUE" Sheets("VA_VALUE").Columns.AutoFit Sheets("CE_NAME").Range("A1").Value = "SOURCE_SEQ_NBR" Sheets("CE_NAME").Range("B1").Value = "L1_PARCEL_NBR" Sheets("CE_NAME").Range("C1").Value = "L1_ATTRIB_TEMP_NAME" Sheets("CE_NAME").Range("D1").Value = "L1_ATTRIB_NAME" Sheets("CE_NAME").Range("E1").Value = "L1_ATTRIB_VALUE" Sheets("CE_NAME").Columns.AutoFit Sheets("CE_VALUE").Range("A1").Value = "SOURCE_SEQ_NBR" Sheets("CE_VALUE").Range("B1").Value = "L1_PARCEL_NBR" Sheets("CE_VALUE").Range("C1").Value = "L1_ATTRIB_TEMP_NAME" Sheets("CE_VALUE").Range("D1").Value = "L1_ATTRIB_NAME" Sheets("CE_VALUE").Range("E1").Value = "L1_ATTRIB_VALUE" Sheets("CE_VALUE").Columns.AutoFit 

谢谢,所有!

如果你编码以上的作品,这会缩短它,使它不那么繁琐。

 Sub Create_PARCEL_Stuff() Sheets.Add.Name = "VA_NAME" Sheets.Add.Name = "VA_VALUE" Sheets.Add.Name = "CE_NAME" Sheets.Add.Name = "CE_VALUE" Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets If ws.Name = "NAME OF YOUR SHEET WITH DATA" Then 'Do Nothing Else ws.ListObjects.Add(xlSrcRange, Sheets("Name of source sheet").Range("$A$1:$E$1"), , xlNo).Name = ws.Name ws.Range("A1").Value = "SOURCE_SEQ_NBR" ws.Range("B1").Value = "L1_PARCEL_NBR" ws.Range("C1").Value = "L1_ATTRIB_TEMP_NAME" ws.Range("D1").Value = "L1_ATTRIB_NAME" ws.Range("E1").Value = "L1_ATTRIB_VALUE" ws.Columns.AutoFit End If Next ws End Sub