|
Option Explicit
Dim arrData() As Variant '学生数据
Dim arrAT() As Variant '准考证表
Dim moveR As Long '固定行偏移
Dim moveC As Integer '固定列偏移
'准考证,Admission ticket
Sub printAT(school As String)
Dim i&, s&
moveR = 11: moveC = 7
arrData = Sheets("准考证信息").Range("a1").CurrentRegion.Value
arrAT = Sheets("准考证").[A1:L20].Value
Call clearAT
For i = 2 To UBound(arrData)
'1)录入指定学校的数据
If arrData(i, 5) = school Then
s = s + 1
Call inputAT(s, i)
End If
'2)输出并打印
If (s Mod 4 = 0 And s > 1) Or i = UBound(arrData) Then
Sheets("准考证").Range("a1").Resize(UBound(arrAT), UBound(arrAT, 2)) = arrAT
Sheets("准考证").PrintOut
Call clearAT
End If
Next i
End Sub
Private Sub clearAT()
Dim j%
For j = 1 To 4
Call inputAT(j, 1)
Next j
Sheets("准考证").Range("a1").Resize(UBound(arrAT), UBound(arrAT, 2)) = arrAT
End Sub
'录入准考证
Private Sub inputAT(s, i)
Dim r&, c%
'行偏移r2,列偏移c2
Select Case s Mod 4
Case 1
r = moveR * 0: c = moveC * 0
Case 2
r = moveR * 0: c = moveC * 1
Case 3
r = moveR * 1: c = moveC * 0
Case 0
r = moveR * 1: c = moveC * 1
End Select
'录入
arrAT(3 + r, 2 + c) = IIf(i = 1, "", arrData(i, 1))
arrAT(4 + r, 2 + c) = IIf(i = 1, "", arrData(i, 2))
arrAT(5 + r, 2 + c) = IIf(i = 1, "", arrData(i, 3))
arrAT(6 + r, 2 + c) = IIf(i = 1, "", arrData(i, 4))
arrAT(7 + r, 2 + c) = IIf(i = 1, "", arrData(i, 5))
arrAT(8 + r, 2 + c) = IIf(i = 1, "", arrData(i, 6))
arrAT(8 + r, 5 + c) = IIf(i = 1, "", arrData(i, 7))
arrAT(9 + r, 3 + c) = IIf(i = 1, "", arrData(i, 8))
End Sub
信息表准考证4.rar
(43.72 KB, 下载次数: 58)
|
|