本帖最后由 neverno 于 2012-5-30 11:35 编辑
(图2)
(图1)
Sub test() Dim zone As Range Dim nbLignes As Integer Dim i As Integer Dim doublons As Boolean Dim taille As Integer Dim leFormat As String Set zone = Range("A2").CurrentRegion nbLignes = zone.Rows.Count taille = 4 leFormat = "0000" Range("A2") = "Code" Do For i = 2 To nbLignes zone.Cells(i, 1) = leCode(zone.Cells(i, 2), taille) zone.Cells(i, 1).NumberFormat = leFormat Next zone.Sort key1:=Range("A2"), Header:=xlYes doublons = False For i = 2 To nbLignes - 1 If zone.Cells(i, 1) = zone.Cells(i + 1, 1) Then doublons = True End If Next If taille < 8 Then leFormat = leFormat & "0" taille = taille + 1 Loop While doublons End Sub Function leCode(ByVal codePerm As String, ByVal n As Integer) Dim c As String c = Mid(codePerm, 5, 4) If n > 4 Then If n <= 8 Then c = c & Right(codePerm, n - 4) ElseIf n <= 12 Then c = Right(codePerm, n) Else c = codePerm End If End If leCode = c End Function 如题,明天考试,这是上课时老师写的代码,图1为运行前,图2 为运行后,目的是将A列中的姓名变为B列的学生证号(由4个字母8个数字组成) 并且删去前两个字母之后,再按A列进行排序
问题: 1 中间定义了doublons查找是否重复,有什么用 2 对于boolean型变量,一开始是不是默认值为FALSE 3 另外定义的函数是为了实现保留学生证号的8个数字?那删去前两个字母在哪体现的?
对于窗体控件部分的,文本框的change 和afterupdate事件有什么区别? 万分感谢 !
|