需要将两张纸合并为一张新纸张的VB代码

时间:2016-07-27 21:14:44

标签: excel vba

我是VB的新手,需要一些帮助。我有一张excel 2013工作簿,有2张。 Sheet1是员工姓名列表(列A有20个名称),dob(列B)等,Sheet2是空白评估表。我需要一个代码,它将复制整个Sheet2(空白表单)并粘贴到一个新的Sheet3中,并将EmpName从row1拉到Sheet3(D4)上的指定单元格,与DOB(J4)相同,等等。我需要它为Sheet1上的每个名称重复此过程。最终目标是以评估的形式提供包含20张工作簿的工作簿,每个工作簿一个。如果此代码可以将选项卡命名为员工姓名,那也是非常好的。这可能吗?我在网上广泛搜索,找不到合适的东西。

这是我目前的代码。就像我说的,我是VBA的新手。代码从员工列表创建新工作表,并复制数据,但现在我需要它还复制整个sheet2(eval表单),并将数据(名称单元格A1从员工列表)放入sheet3中的表单(新工作表) )在单元格D4中。

Sub CreateSheetsFromEmployeeList()

Dim nameSource  
Dim nameColumn      
Dim nameStartRow    As Long     
Dim nameEndRow      As Long     
Dim employeeName    As String   
Dim newSheet        As Worksheet    

nameSource = "Ayre" 
nameColumn = "A"    
nameStartRow = 2    

nameEndRow = Worksheets(nameSource).Cells(Rows.Count, nameColumn).End(xlUp).Row 
Do While (nameStartRow <= nameEndRow)   
    employeeName = Sheets(nameSource).Cells(nameStartRow, nameColumn)   
    employeeName = Trim(employeeName)   
    If (employeeName <> vbNullString) Then  
        On Error Resume Next 'do not throw error    
        Err.Clear 'clear any existing error 

        Sheets(employeeName).Name = employeeName    
        If (Err.Number > 0) Then    
            Err.Clear   
            On Error GoTo -1    
            Set newSheet = Sheets.Add(After:=Sheets(Sheets.Count))  
            newSheet.Name = employeeName    

            Sheets(nameSource).Activate 
            LastCol = ActiveSheet.Cells(nameStartRow, Application.Columns.Count).End(xlToLeft).Column   
            Range(Cells(nameStartRow, 1), Cells(nameStartRow, LastCol)).Select  
            Selection.Copy  

            Sheets(employeeName).Activate  'NEW 
            Sheets(employeeName).Cells(1, "A").PasteSpecial 
            [a1].Select  'NEW   
            Application.CutCopyMode = False 
            Sheets(employeeName).Columns("A:K").AutoFit 
        End If  
    End If  
    nameStartRow = nameStartRow + 1     
Loop    
End Sub 

2 个答案:

答案 0 :(得分:0)

Record a macro

录制宏时,宏录制器会记录完成您希望宏执行的操作所需的所有步骤。迭代您的动作一次,停止录制,然后查看宏以重复并构建您的最终自动化宏。

enter image description here

答案 1 :(得分:0)

此代码演示了您需要的基本原则:

.sidenav-overlay{opacity: 0;}