我有一个包含 2 张纸的工作簿:学生 和模板。
在学生中,我有一个包含 3 列的列表:StudentName、StudentUser 和 StudentPassword。
模板表是访问某个数据库的指南,它有 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/