字體:小 中 大 | |
|
|
2010/02/22 19:44:50瀏覽2876|回應0|推薦1 | |
第1題解題程式 Option Base 1 '宣告陣列變數指標由1開始 Dim d(9), X(2) As Integer '宣告兩個整數型態陣列,d(9)是身份證數字,X(2)是英文字的數字代號 Sub check1(e, id, L1) 'e為錯誤碼,id身份證字號,L1字號第1個字母 If Len(id) <> 10 Or L1 < "A" Or L1 > "Z" Then '檢查id是否為十碼,L1是否為的英文字母 e = "FORMAT ERROR" '如果不是則變數e等於"FORMAT ERROR" Else For i = 1 To 9 '如果是,再檢查後9碼是否為數字 d(i) = Mid(id, i + 1, 1) '用mid函數取出1碼至陣列變數d(i) If d(i) < 0 Or d(i) > 9 Then '檢查是否為數字 e = "FORMAT ERROR" '如果不是則變數e等於"FORMAT ERROR" Exit For '並且跳出迴圈 End If Next i End If End Sub Sub check2(e, id, sex) 'e為錯誤碼,id身份證字號,sex為性別 For i = 1 To 9 '用迴圈轉換身份證字號的變數型態 d(i) = CInt(Mid(id, i + 1, 1)) '轉成整數型態並存放至陣列變數d(i) Next i '檢查數字第1碼是1時,性別是否為M或是 '第1碼為2時,性別是否為F,如果不是則變數e=SEX CODE ERROR If (sex = "M" And d(1) <> 1) Or (sex = "F" And d(1) <> 2) Then e = "SEX CODE ERROR" End Sub Sub check3(e, L1) 'e為錯誤碼,L1字號第一個字母 S = InStr("ABCDEFGHJKLMNPQRSTUVXYWZIO", L1) + 9 '利用Instr函數來計算英文字的數字代碼 X(1) = Mid(S, 1, 1) 'X(1)為數字代碼的第一位數 X(2) = Mid(S, 2, 1) 'X(2)為數字代碼的第二位數 Y = X(1) + 9 * X(2) + 8 * d(1) + 7 * d(2) + 6 * d(3) + 5 * d(4) + 4 * d(5) + 3 * d(6) + 2 * d(7) + d(8) + d(9) If (Y Mod 10) <> 0 Then e = "CHECK SUM ERROR" '如果10無法整除則變數e=CHECK SUM ERROR" End Sub Private Sub Form_Load() M = 2 '設變數M初始值為2,用來設定MSF的物件開始有2列 Open "D:\940306.SM1" For Input As #1 '開啟檔案 Do While Not EOF(1) '判斷檔案是否為最後一筆 Input #1, id, N, sex '讀取變數id身份證字號,N姓名, Sex性別 MSF.Rows = M '設定MSF物件有M列 L1 = Mid(id, 1, 1) '設定L1為第一個字母 e = "" '設定變數e初始為空字串 Call check1(e, id, L1) '呼叫副程式check1,檢查格式是否有錯誤 If e = "" Then Call check2(e, id, sex) '呼叫副程式check2,檢查性別代碼是否有錯誤 If e = "" Then Call check3(e, L1) '呼叫副程式check3,檢查公式是否有錯誤 With MSF .Row = M - 1 '指標指定在第M-1列 .Col = 1: .Text = id '欄指標指定在第1欄,身份證字號指定到此欄 .Col = 2: .Text = N '欄指標指定在第2欄,姓名指定到此欄 .Col = 3: .Text = sex '欄指標指定在第3欄,性別指定到此欄 .Col = 4: .Text = e '欄指標指定在第4欄,檢查結果指定到此欄 End With M = M + 1 'M加1,代表MSF元件準備新增一列 Loop With MSF .Row = 0 '列指標指到第0列 .Col = 1: .Text = "ID NO" '欄指標指定到第1欄且指定名稱"ID NO" .Col = 2: .Text = "NAME" '欄指標指定到第2欄且指定名稱"NAME" .Col = 3: .Text = "SEX" '欄指標指定第3欄且指定名稱"SEX" .Col = 4: .Text = "ERROR" '欄指標指定第4欄且指定名稱"ERROR" .ColWidth(0) = 500 '第0欄寬度500 .ColWidth(1) = 1200 '第1欄寬度1200 .ColWidth(2) = 1200 '第2欄寬度1200 .ColWidth(3) = 1200 '第3欄寬度1200 .ColWidth(4) = 1800 '第4欄寬度1800 .Width = 6000 '調整MSF物件寬度 .Height = 220 * M '調整MSF物件高度 .Col = 1 '欄指標指到第1欄 .Sort = 5 '依按第1欄遞增排序 End With Form1.Height = 220 * M + 3000 '重新調整表單高度,一筆記錄高度是220加上考生檢定資料框 End Sub 執行畫面 |
|
( 休閒生活|網路生活 ) |