Cùng thực hiện chương trình trắc nghiệm Excel 100% nào !!!

Liên hệ QC

handung107

Thành viên gắn bó
Thành viên danh dự
Tham gia
30/5/06
Bài viết
1,630
Được thích
17,436
Nghề nghiệp
Bác sĩ
Chào các bạn,
Chương trình trắc nghiệm 100% Excel đang chờ các bạn cùng tôi xây dựng. Nếu các bạn thử nghiệm thấy bị lỗi thì vui lòng post lên đây. Hay các bạn có thể góp ý trực tiếp vào thread này nha.
Worksheet của file trắc nghiệm này gồm có các sheet chính:
1. Main: để tạo giao diện ban đầu cho chương trình.
2. Các sheet subject khác được đặt tên theo quy định "SUB" & số thứ tự đề tài được tạo. Số thứ tự này sẽ được tạo một cách tự động. Các sheet này sẽ được dấu đi khi khởi tạo cũng như trong lúc người sử dụng dùng nó. Số sheet subject này sẽ được giới hạn bởi một hằng Public trong một module (tối đa 10, hay 100)
Cấu trúc của mỗi sheet này như sau:
_Ở cell A1: là phần diễn giải của các Subject.
_Các câu hỏi sẽ được đặt trong hàng tiếp theo, cột tiếp theo. Ví dụ câu hỏi đầu tiên trong chuyên mục này sẽ được đặt tại cell B2. Kế tiếp cell C2 sẽ là câu trả lời 1, D2 sẽ có giá trị 0/1 tùy theo câu trả lời này được cho là đúng hay sai. Câu trả lời tiếp sẽ được đặt tương tự tại E2,...Chỉ được 4 câu mà thôi.
Việc thao tác với các dữ liệu, các subject sẽ được một người biết passworld nhập vào (đây chỉ là giả bộ thôi...!). Phải tạo ra các form cho công việc được dễ dàng. Còn người "làm bài trắc nghiệm" sẽ được tạo các form làm bài, nhằm giúp cho người làm bài được dễ dàng. Mỗi câu đúng sẽ được 25 điểm. Số điểm sẽ được cộng dồn cho tới khi người làm bài kết thúc, đóng form làm bài lại.

Nhằm tránh cho chương trình báo lỗi đang khi thực hiện (chứ để người khác cười cho!) chúng ta dùng một module của e-book có trong đĩa EFC1.
Nội dung của module như sau:

Mã:
Option Explicit
'Source code from Professional Excel Development
'Module name: ErrorHandler
Public Const gbDEBUG_MODE As Boolean = False
Public Const glHANDLED_ERROR As Long = 9999
Public Const glUSER_CANCEL As Long = 18

Private Const msSILENT_ERROR As String = "UserCancel"
Private Const msFILE_ERROR_LOG As String = "Error.log"
Private Const gsAPP_TITLE As String = "NOTICE"

Public Function bCentralErrorHandler( _
            ByVal sModule As String, _
            ByVal sProc As String, _
            Optional ByVal sFile As String, _
            Optional ByVal bEntryPoint As Boolean) As Boolean

    Static sErrMsg As String

    Dim iFile As Integer
    Dim lErrNum As Long
    Dim sFullSource As String
    Dim sPath As String
    Dim sLogText As String

    ' Grab the error info before it's cleared by
    ' On Error Resume Next below.
    lErrNum = Err.Number
    ' If this is a user cancel, set the silent error flag
    ' message. This will cause the error to be ignored.
    If lErrNum = glUSER_CANCEL Then sErrMsg = msSILENT_ERROR
    ' If this is the originating error, the static error
    ' message variable will be empty. In that case, store
    ' the originating error message in the static variable.
    If Len(sErrMsg) = 0 Then sErrMsg = Err.Description

    ' We cannot allow errors in the central error handler.
    On Error Resume Next

    ' Load the default filename if required.
    If Len(sFile) = 0 Then sFile = ThisWorkbook.Name

    ' Get the application directory.
    sPath = ThisWorkbook.Path
    If Right$(sPath, 1) <> "\" Then sPath = sPath & "\"

    ' Construct the fully-qualified error source name.
    sFullSource = "[" & sFile & "]" & sModule & "." & sProc

    ' Create the error text to be logged.
    sLogText = "  " & sFullSource & ", Error " & _
                        CStr(lErrNum) & ": " & sErrMsg

    ' Open the log file, write out the error information and
    ' close the log file.
    iFile = FreeFile()
    Open sPath & msFILE_ERROR_LOG For Append As #iFile
    Print #iFile, Format$(Now(), "mm/dd/yy hh:mm:ss"); sLogText
    If bEntryPoint Then Print #iFile,
    Close #iFile

    ' Do not display silent errors.
    If sErrMsg <> msSILENT_ERROR Then

        ' Show the error message when we reach the entry point
        ' procedure or immediately if we are in debug mode.
        If bEntryPoint Or gbDEBUG_MODE Then
            Application.ScreenUpdating = True
            MsgBox sErrMsg, vbCritical, gsAPP_TITLE
            ' Clear the static error message variable once
            ' we've reached the entry point so that we're ready
            ' to handle the next error.
            sErrMsg = vbNullString
        End If

        ' The return value is the debug mode status.
        bCentralErrorHandler = gbDEBUG_MODE

    Else
        ' If this is a silent error, clear the static error
        ' message variable when we reach the entry point.
        If bEntryPoint Then sErrMsg = vbNullString
        bCentralErrorHandler = False
    End If

End Function

Các bạn hãy cố gắng đọc các đoạn mã trên nha. "Đại ý" của module trên là giúp ghi báo lỗi ra một file text Error.txt. Điều này cũng rất cần cho các bạn viết các chương trình nhỏ cung cấp cho các "khách hàng".
File được viết trên phiên bản Excel 2000.
Thôi nghỉ giải lao tí. Tôi tạm thời upload file lên để các bạn tham khảo, góp ý và cùng nhau thực hiện.

Mong góp ý và cùng thực hiện!
Thân,

Lê Văn Duyệt
 
Chỉnh sửa lần cuối bởi điều hành viên:
Duyệt ơi chị Post đề tài này lên đây, chúng ta sẽ tiếp tục dự án này. Chúng ta sẽ cùng thảo luận xem Excel sẽ kết hợp cùng Access và Visual Basic như thế nào để hoàn thành dự án này, và sẽ tặng cho các bạn trước Tết nhé
 
Chưa thấy mục tiêu, kế hoạch thực hiện, các chức năng chính, mô tả tổng quan, mô tả...v.v... đâu cả. Tự nhiên thấy có code của một module ...xử lý lỗi chả dùng để làm gì cả. Anh Duyệt ơi, anh đang làm cái gì mà bí mật thế? :-=
 
hai2hai đã viết:
Chưa thấy mục tiêu, kế hoạch thực hiện, các chức năng chính, mô tả tổng quan, mô tả...v.v... đâu cả. Tự nhiên thấy có code của một module ...xử lý lỗi chả dùng để làm gì cả. Anh Duyệt ơi, anh đang làm cái gì mà bí mật thế? :-=
hai2hai:
Chị Dung lấy cái chương trình cùng thực hiện chương trình trắc nghiệm bên webketoan đó mà. Mà sao chị Dung chỉ post có cái này thôi! :(, anh nhớ là có cả file đã khởi đầu rồi...nhưng chờ hoài không ai làm tiếp cả !!!

Lê Văn Duyệt
 
Đúng rồi các bác quản trị cũng nên cho anh em trong GPE thực hiện một đề án gì chung cho vui chứ nhỉ mà lại rất có ý nghĩa, nếu thành công sẽ gây được tiếng vang khá lớn đấy.
Riêng em tuy excel, access và VBA hơi kém nhưng cũng muốn góp sức, các bác có việc chân tay, cửu vạn nào cứ bảo em(em làm hết). Tưởng việc gì khó khăn chứ ba cái việc chân tay thì em là nhanh lắm ví dụ như đánh máy chẳng hạn.
 
Web KT
Back
Top Bottom