vba基于表中的列表在工作表中创build其他选项卡

我不是精通vba和macros,我需要帮助创build基于列表的其他工作表。 所以我有一个表的第一列的列表,第二列的位置,第8列的训练员和第11列的开始date。我还需要使用class级列表数据重命名复制的选项卡,并将其放入单元格E6中好。 问题是我不知道如何也得到每个类的位置,培训师和开始date,并把它们放在复制选项卡(开始date在E5,教练在E7和位置在E8。

这是我迄今为止:

Sub CreateCATtabs() On Error GoTo GetOut Dim cName As Range, cList As Range Set cList = Sheets("Control").Range("ClassList2017") For Each cName In cList If cName.Value = "" Then GoTo GetOut Sheets("Class Attendance").Copy After:=Sheets(Sheets.Count) With ActiveSheet .Name = cName.Value .Range("E6").Value = cName.Value End With Next cName GetOut: End Sub 

我认为这将工作。 我重构了一些以避免GoTo语句并声明一些显式对象。 适当的错误陷阱总是击败GoTo语句。

 Option Explicit Sub CreateCATtabs() Dim wsControl As Worksheet, wsAttendance As Worksheet Set wsControl = Worksheets("Control") Set wsAttendance = Worksheets("Class Attendance") Dim cName As Range, cList As Range Set cList = wsControl.Range("ClassList2017") For Each cName In cList If cName.Value <> "" Then wsAttendance.Copy After:=Sheets(Sheets.Count) Dim wsCopy As Worksheet Set wsCopy = ActiveSheet With wsCopy .Name = cName.Value .Range("E6").Value = cName.Value .Range("E5").Value = cName.Offset(, 10).Value 'offset is 1 minus the column number .Range("E7").Value = cName.Offset(, 7).Value .Range("E8").Value = cName.Offset(, 1).Value End With Else Exit For End If Next cName End Sub