我在下面有一个VBA代码,用于将信息从主工作表转移到新工作表。前三列是一个模板(学校成绩单),它会转到每个新表。下一列(学生成绩)分别单独转到不同的工作表,始终显示在模板旁边的D列中。
`Option Explicit
Sub parse_data()
Dim studsSht As Worksheet
Dim cell As Range
Dim stud As Variant
Set studsSht = Worksheets("Input")
With CreateObject("Scripting.Dictionary")
For Each cell In studsSht.Range("D7:Q7").SpecialCells(xlCellTypeConstants, xlTextValues)
.Item(cell.Value) = .Item(cell.Value) & cell.EntireColumn.Address(False, False) & ","
Next
For Each stud In .keys
Intersect(studsSht.UsedRange, studsSht.Range(Left(.Item(stud), Len(.Item(stud)) - 1))).Copy Destination:=GetSheet(CStr(stud)).Range("D1")
Next
End With
studsSht.Activate
End Sub
Function GetSheet(shtName As String) As Worksheet
On Error Resume Next
Set GetSheet = Worksheets(shtName)
If GetSheet Is Nothing Then
Set GetSheet = Sheets.Add(after:=Worksheets(Worksheets.Count))
GetSheet.Name = shtName
Sheets("Input").Range("A1:C63").Copy
GetSheet.Range("A1:D63").PasteSpecial xlAll
End If
End Function`
我的问题是该模板还包含徽标(由于显而易见的原因,我已将其从屏幕截图中删除),但我无法让它们转到新的表格。
我已尝试将徽标放在隐藏的工作表上,我希望它们显示在新工作表中,并将Sheets.Add
替换为HiddenSheet.Copy
,但它会出错。我想我正在尝试使代码转换两个模板然后,一个在另一个之上。如果有人能让它发挥作用,那就好了。
我也尝试过使用TopLeft Center,但这些徽标偏离了它们的位置。我更喜欢模板方法。
对亲戚有什么帮助?