Tạo công cụ học từ vựng trong Excel (3 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

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,442
Nghề nghiệp
Bác sĩ
Lê Văn Duyệt​

Có bao giờ các bạn nghĩ tới việc tạo công cụ học từ vựng trong Excel giống như các chương trình học tiếng Anh không?

Đầu tiên bạn hãy tạo một file Excel mới và đặt tên là Timer (bạn có thể đặt tên khác). Bạn xóa hết các sheet, chỉ để lại một sheet và đặt tên là Data. Khối dữ liệu của chúng ta sẽ có 2 cột: Cột một là tựa đề, cột hai là nội dung. Chú ý là các hàng dữ liệu phải liên tục nhau.

Tiếp theo, chúng ta tạo một module và đặt tên là ModuleTimer (Hình 1) và nhập đoạn code 1. Ở đây chúng ta dùng hai hàm API là SetTimer và KillTimer.

TaoCongcuHocTuVung3.jpg


Tạo một form với tên là frmMain với thuộc tính ShowModal là False như hình 3 và thêm các đối tượng sau:

TaoCongcuHocTuVung2.jpg


- TextBox txtTopic với thuộc tính WordWrap là True

- TextBox txtDescriptions với thuộc tính WordWrap là True

- 4 nút lệnh với tên lần lượt: cmdStart, cmdStop, cmdSetTime, cmdClose, với thuộc tính Caption lần lượt: Bắt đầu học, Ngừng học, Định thời gian, Đóng.(xem hình 2)

TaoCongcuHocTuVung1.jpg


Và bây giờ bạn hãy nhập đoạn code 2 cho form frmMain.

Bước cuối cùng, bạn hãy trở về màn hình soạn thảo Excel.

Cho hiện thanh công cụ Visual Basic (View->Toolbars->Control Toolbox), chọn Command Button (Hình 3) và đặt lên sheet Data (như hình 4), đặt tên là cmdHoc với thuộc tính Caption là Học. Sau đó nhấn đúp vào nút lệnh để nhập đoạn mã sau:

TaoCongcuHocTuVung.jpg


Private Sub cmdHoc_Click()

frmMain.Show

End Sub

Bây giờ bạn hãy trở về màn hình soạn thảo Excel và tắt chế độ Design (nhấn vào biểu tượng thước Ê ke và cây viết), và hãy thử nhấn vào nút lệnh vừa tạo xem sao. Một công cụ học từ vựng thật đơn giản, phải không các bạn.

Hy vọng rằng bài viết này hữu ích cho các bạn.
 
Lê Văn Duyệt​

CODE 1

Public Declare Function SetTimer Lib "user32"( ByVal HWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Public Declare Function KillTimer Lib "user32" ( ByVal HWnd As Long, ByVal nIDEvent As Long) As Long
Public TimerID As Long
Public TimerSeconds As Single
Public BLDefaul As Boolean
Public StrTopic As String
Public StrDes As String
Public IntCount As Integer
Public BLHaveStartTimer As Boolean
Sub StartTimer()
If BLDefaul = False Then
TimerSeconds = 3 ' Mặc định là 1 giây
End If
TimerID = SetTimer(0&, 0&, TimerSeconds * 1000&, AddressOf TimerProc)
End Sub
Sub SetTime()
Dim VTime As Single
Dim VAns As String
BLDefaul = False
VAns = InputBox("Xin nhập vào thời gian (giây) cho timer ", "Định thời gian")
If Len(VAns) = 0 Then
BLDefaul = False
Else
VTime = CSng(VAns)
TimerSeconds = VTime
BLDefaul = True
End If
End Sub
Sub EndTimer()
On Error Resume Next
KillTimer 0&, TimerID
End Sub
Sub TimerProc(ByVal HWnd As Long, ByVal uMsg As Long, ByVal nIDEvent As Long, ByVal dwTimer As Long)
'
' The procedure is called by Windows. Put your
' timer-related code here.
'
On Error GoTo Thongbao1
If IntCount = 0 Then IntCount = 2

MsgBox "Dữ liệu của bạn không có!", vbOKOnly, "Công cụ học từ vựng"
Exit Sub
End If
Else
IntCount = IntCount + 1
End If
frmMain.txtTopic.Text = StrTopic
frmMain.txtDescriptions.Text = StrDes
DoEvents
Exit Sub
Thongbao1:
Call EndTimer
End Sub

CODE 2

Private Sub cmdClose_Click()
If BLHaveStartTimer = True Then
Call cmdStop_Click
End If
End
End Sub
' Nhằm bảo đảm nếu đã gọi Timer rồi thì sẽ không gọi nữa
Private Sub cmdSetTime_Click()
Call SetTime
Call cmdStop_Click
Call cmdStart_Click
End Sub
Private Sub cmdStart_Click()
If BLHaveStartTimer = False Then
Call StartTimer
BLHaveStartTimer = True
End If
End Sub
Private Sub cmdStop_Click()
Call EndTimer
BLHaveStartTimer = False
End Sub
Private Sub UserForm_
QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
Cancel = True
MsgBox "Xin bạn đóng bằng nút lệnh ĐÓNG!", vbOKOnly, "Công cụ học từ vựng"
End If
End Sub



StrTopic = Application.Workbooks("Timer").
Sheets("Data").Cells(IntCount, 1)
StrDes = Application.Workbooks("Timer").
Sheets("Data").Cells(IntCount, 2)
If Len(Trim(StrTopic)) = 0 Then
IntCount = 2
StrTopic = Application.Workbooks("Timer").
Sheets("Data").Cells(IntCount, 1)
StrDes = Application.
Workbooks("Timer").Sheets("Data").
Cells(IntCount, 2)
If Len(Trim(StrTopic)) = 0 Then
BLHaveStartTimer = False
Call EndTimer
 
Bài sau

Chào các bạn,
Bài sau chúng ta sẽ thử việc dùng Text to speech để thêm cho ứng dụng này. Dĩ nhiên nếu dùng kỹ thuật này thì nó không hay lắm nhưng cũng có thể chấp nhận được.
Lê Văn Duyệt
 
Ông post file lên luôn đi khỏi mất công pà kon ngươi ta viết code lại nữa
 
Tôi down file của bạn về thử thì vẫn chạy bình thường mà bạn? Bạn bấm start rồi phải chờ một khoảng thời gian nho nhỏ để nó load từng từ cho bạn học. Còn nếu bạn muốn nhanh thì bấm timer để set lại.

Uh nhi, hjc, gio moi thay no load, bo tay

sr mod, tu nhien minh khong go duoc tieng Viet :(
 
Web KT

Bài viết mới nhất

Back
Top Bottom