excel - VBA从列表中创建单独的工作表并将数据复制到同一列表中的每个工作表

标签 excel vba

我有一个包含 2 张纸的工作簿:学生模板

在学生中,我有一个包含 3 列的列表:StudentNameStudentUserStudentPassword

模板表是访问某个数据库的指南,它有 3 个字段,我必须从学生列表中获取 3 个信息。

我正在尝试使用 VBA 为每个学生创建单独的工作表,复制模板,将其命名为 *"Student_"& StudentName*,并在每个工作表上添加学生列表中的 3 个不同信息在新创建的工作表的某些位置

  • 学生姓名 B2
  • D15 的用户,以及
  • 密码D17

这是让我头痛的代码,因为我无法在新创建的工作表上获取用户和密码:

Sub CreateAndNameWorksheetsStudents()
    Dim c As Range
    Dim u As Range
    Dim p As Range

        Application.ScreenUpdating = False
    For Each c In Sheets("Students").Range("A2:A3")
        Sheets("Template").Copy After:=Sheets(Sheets.Count)
        With c
            ActiveSheet.Name = "Elev_" & .Value
            .Parent.Hyperlinks.Add Anchor:=c, Address:="", SubAddress:= _
                "'" & "Parinte_" & .Text & "'!A1", TextToDisplay:=.Text
        End With
      c.Copy
      ActiveSheet.Range("B2").PasteSpecial


            For Each u In Sheets("Students").Range("B2:B3")
                u.Copy
                ActiveSheet.Range("D15").PasteSpecial
            Next u

            For Each p In Sheets("Students").Range("C2:C3")
                p.Copy
                ActiveSheet.Range("D17").PasteSpecial
            Next p


    Next c

     Application.ScreenUpdating = True
End Sub

有人可以告诉我我做错了什么吗?

谢谢

最佳答案

试试这个:

Sub CreateAndNameWorksheetsStudents()
    Dim c As Range, rng As Range
    Dim nSh As Worksheet

    Application.ScreenUpdating = False

    With Sheets("Students")
        Set rng = .Range("A2:A" & .Cells(.Rows.Count, "A").End(xlUp).Row)
    End With

    For Each c In rng
        Sheets("Template").Copy After:=Sheets(Sheets.Count)
        Set nSh = Sheets(Sheets.Count)
        With c
            nSh.Name = "Elev_" & .Value
            .Parent.Hyperlinks.Add Anchor:=c, Address:="", SubAddress:= _
                "'" & nSh.Name & "'!A1", TextToDisplay:=.Text
            nSh.Range("B2").Value = .Value
            nSh.Range("D15").Value = .Offset(, 1).Value
            nSh.Range("D17").Value = .Offset(, 2).Value
        End With
    Next c

    Application.ScreenUpdating = True
End Sub

关于excel - VBA从列表中创建单独的工作表并将数据复制到同一列表中的每个工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22554799/

相关文章:

excel - 评估 Office 应用程序状态栏中的进度条

excel - 如何按名称过滤一列,然后从另一列中获取值?

excel - VBA 测试单元格是否在范围内

excel - 如何从 VBA 更改列名

html - 在 MySQL 中从 html 转换 ascii 字符

excel - 如果在工作表中找不到部分字符串,VBA 跳过文件?

excel - Excel 2013 VBA 编辑器中的引用呈灰色

c# - 保存后 Excel 格式损坏

VBAusedrange运行时错误438对象不支持此属性或方法

excel - IE11框架通知栏保存按钮