Tải bản đầy đủ (.doc) (6 trang)

Gián án Ứng dụng Excel

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (71.4 KB, 6 trang )

Chương trình ứng dụng trên Excel
Nhiều người cứ phàn nàn rằng, họ không thể phát triển ứng dụng của mình khi không có các chương trình thảo
chương lập trình. Điều đó không hẳn đã như vậy.
Microsoft xây dựng bộ OFFICE có tính chất mở, nghĩa là ta có thể từ chính các ứng dụng OFFICE mà phát triển
lên thành chương trình của mình. Nếu các bạn đã quen với lập trình Access, thì bài viết này lại đề cập sang vấn
đề tương tự, đó là phát triển chương trình dựa trên bảng tính điện tử Excel, bảng tính được coi là một trong
những công cụ tính toán mạnh nhất thế giới.
Trong xây dựng các ứng dụng có thể có nhiều cách, nhưng tận dụng được những gì đã có của máy tính, của
EXcel để biến nó thành "thứ của mình" lại là vấn đề cần phải xem xét. Khi lập trình bạn sẽ phải vướng vào một
số nhiệm vụ sau, tôi liệt kê ra để những bài viết sau của chương "Cải tổ Windows", bạn đỡ phải bỡ ngỡ vì nó:
1. Tận dụng những hàm và thủ tục có sẵn của VBA (Visual Basic For Application)
Trong đó tôi sẽ nêu ra VBA giống và khác với VB (Visual Basic) ở những điểm gì. Điều này, những người quen
lập trình với VB sẽ quan tâm hơn cả.
2. Sử dụng Windows API:
Những hàm hệ thống của Windows để khai thác triệt để cũng như điều chỉnh Windows theo mong muốn. Đồng
thời giải quyết những vấn đề mà các hàm và thủ tục VBA không thực hiện được.
3. Kỹ thuật HOOK và SUBCLASS:
Bạn phải sử dụng những chức năng để kiểm soát người dùng, đồng thời "lấy" những giá trị mà người dùng cấp
cho các hộp thoại, cũng như các Form nhập không phải là chương trình của bạn, để xử lý. Vấn đề này tôi xin
viết ở bài viết riêng, (Vì đây chính là những chương trình HACKER đang câu móc), tuy nhiên bạn có thể tham
khảo trong các bài kế tiếp.
4. Cải tiến và kiểm soát Registry:
Có quá nhiều bài viết về vấn đề này, tuy nhiên tôi xin giới thiệu ở khía cạnh khác, khía cạnh mà những bài đã
viết ít hoặc không đề cập tới.
5. Bảo mật:
Bạn cần có một số phương pháp cần giữ bản quyền để chống sao chép trộm, đồng thời che giấu phần lập trình.
6. Viết trợ giúp:
Có nhiều cách để biên tập thành tệp HLP, tuy nhiên xu hướng hiện nay là biên tập thành tệp dạng web để có thể
xem trong INTERNET cũng như xrm bằng các trình duyệt.
7. Đóng gói và cài đặt
Sau khi đã hoàn thành khung và giao tiếp, bạn gõ Alt + F11, Ctrl +R sau đó chèn Insert Module vào tệp Project


của bạn Tiến hành lập trình ví dụ:
Option Explicit
Sub Auto_Open()
' Lệnh tự động thực hiện khi mở tệp
Dim quangcao
Dim hoi As Integer
' Đổi tên tiêu đề "Microsoft Excel" thành tiêu đề chương trình của mình
Application.Caption = "Xem đẻ con trai hay con gái"
' Không dùng tiêu đề của cửa sổ tài liệu
ThisWorkbook.Windows(1).Caption = ""
'Làm việc với Sheet "Giao tiếp
Sheets("Giao tiếp").Select
Range("A1").Select
'Che giấu tất cả những gì nhìn thấy thông thường như các thanh công
'cụ, thanh công thức, thanh trạng thái...
' Đánh theo máy của bạn vì có thể khác máy của tôi
Toolbars(1).Visible = False
Toolbars(2).Visible = False
Toolbars(9).Visible = False
Application.DisplayFormulaBar = False
Application.DisplayStatusBar = False
With ActiveWindow
.DisplayGridlines = False
.DisplayHeadings = False
.DisplayOutline = False
.DisplayZeros = False
.DisplayHorizontalScrollBar = False
.DisplayVerticalScrollBar = False
.DisplayWorkbookTabs = False
End With

Application.DisplayNoteIndicator = False
'ActiveWindow.Visible = False
'Hiện hộp thoại hỏi
hoi = MsgBox("Bạn có muốn xem mình sinh con trai hay gái không ? Nếu muốn nhấn YES, không nhấn NO.",
4132, "Hỏi xem có xem không?")
'Nếu người dùng đồng ý
If hoi = 6 Then
'Thực hiện thủ tục nhapngay rồi thủ tục Batdau
nhapngay
batdau
Else
'Nếu người dùng không đồng ý xem
Application.Caption = "Microsoft Excel" 'Trả lại tên cho Excel
'Cho hiện lại những gì đã che giấu
Toolbars(1).Visible = True
Toolbars(2).Visible = True
' ActiveWindow.Visible = True
Application.DisplayFormulaBar = True
Application.DisplayStatusBar = True
With ActiveWindow
.DisplayGridlines = True
.DisplayHeadings = True
.DisplayOutline = True
.DisplayZeros = True
.DisplayHorizontalScrollBar = True
.DisplayVerticalScrollBar = True
.DisplayWorkbookTabs = True
End With
Application.DisplayNoteIndicator = True
'Cất

ActiveWorkbook.Save
'Thoát khỏi
Application.Quit
End If
End Sub
Sub batdau()
'Thủ tục bắt đầu, khai báo các biến sử dụng
Dim tuoi
Dim hang
Dim cot As Integer
Dim thoi As Boolean
Dim contrai
Dim hoi
Dim nhactuoi
Dim ten
Dim dien
thoi = True
While thoi
'Nhận tên người xem
ten = InputBox("Xin cho biết tên người cần xem:", "Nhập tên")
If ten = "" Then
dien = "Bạn này giấu tên"
Else
dien = ten
End If
'Điền tên người xem vào ô A3
Range("A3").Select
ActiveCell.FormulaR1C1 = dien
z:
'Nhắc nhập tuổi người cần xem

nhactuoi = "Xin cho biết tuổi của bạn " + ten + " khi thụ thai." + Chr(13) + "Chú ý là tuổi theo tuổi mụ." +
Chr(13) + "VD: Nếu bạn sinh 1980, thì bạn " + Str(Year(Date) - 1979) + " tuổi."
tuoi = InputBox(nhactuoi, "Nhập tuổi", 18)
If tuoi = "" Then
MsgBox ("Bạn chưa nhập tuổi, tạm coi khi thụ thai tuổi bạn " + ten + " là 18.")
tuoi = 18
End If
'Nếu nhập sai tuổi, yêu cầu nhập lại
If Not IsNumeric(tuoi) Then
MsgBox ("Xin nhập lại bằng số.")
GoTo z:
End If
'Nếu tuổi quá giới hạn cho phép
If (tuoi < 18) Or (tuoi > 44) Then
'Thông báo khi người xem quá nhỏ tuổi
If (tuoi < 18) Then
MsgBox ("Xin lỗi, tại sao em " + ten + " nhỏ tuổi mà lại dại dột thế? Máy từ chối xem cho trường hợp này, nên
đặt vòng cho em " + ten)
Else
'Thông báo khi người xen quá lớn tuổi
MsgBox ("Xin lỗi, tại sao bà " + ten + " lớn tuổi như thế mà lại có con là thế nào? Máy từ chối xem cho trường
hợp này, xin bà " + ten + " đừng đẻ nữa.")
End If
Else
y:
'Nhập tháng thụ thai vào biến hang để tra bảng
hang = InputBox("Xin cho biết bạn " + ten + " thụ thai vào tháng nào:" + Chr(13) + "(Xin lưu ý tháng nhập này
là tháng âm lịch)", "Nhập tháng thụ thai", 1)
If hang = "" Then
'Nếu không nhập, coi luôn là tháng 1

MsgBox ("Bạn chưa nhập tháng thụ thai, tạm coi là tháng 1.")
hang = 1
End If
If Not IsNumeric(hang) Then
'Nếu nhập sai, yêu cầu nhập lại
MsgBox ("Xin nhập lại bằng số.")
GoTo y:
End If
'Nếu cố tình nhập sai tháng
If (hang > 12) Or (hang < 0) Then
Do While (hang > 12) Or (hang < 0)
MsgBox ("Mỗi năm chỉ có 12 tháng, bạn đừng đãng trí quá mức như vậy.")
hang = InputBox("Xin cho biết tháng mà bạn " + ten + " thụ thai:", "Nhập tháng thụ thai")
Loop
End If
'Xác định cột cần tra
cot = tuoi - 17
Sheets("Giao tiếp").Select
'Tra trong bảng gốc
contrai = Sheets("Bảng gốc").Cells(hang, cot).Value
If contrai = "T" Then
'Nếu giá trị là T
MsgBox ("Bạn " + ten + " sẽ sinh con trai. Xin chúc mừng !")
Else
MsgBox ("Xin bạn " + ten + " đừng buồn. Bạn sẽ sinh con gái. Bạn vẫn có thể đẻ tiếp con trai ở những lần sau,
bạn " + ten + " ạ.")
End If
'Gọi thủ tục Cocontrai
Cocontrai (cot)
'Hỏi xem nữa không

hoi = MsgBox("Xem nữa không ? Nếu xem nữa nhấn YES, không xem nữa nhấn NO.", 4132, "Hỏi xem có xem
nữa không ?")
If hoi = 7 Then
thoi = False
End If
End If
Wend
'Thông báo trước khi thoát
MsgBox ("Đây chỉ là chương trình thử nghiệm chỉ đúng khi bạn sinh hoạt, ăn uống bình thường. Xin cám ơn.")
Application.Caption = "Microsoft Excel" 'Trả lại tên cho Excel
'Cho hiện lại những gì đã giấu
Toolbars(1).Visible = True
Toolbars(2).Visible = True
ActiveWindow.Visible = True
Application.DisplayFormulaBar = True
Application.DisplayStatusBar = True
With ActiveWindow
.DisplayGridlines = True
.DisplayHeadings = True
.DisplayOutline = True
.DisplayZeros = True
.DisplayHorizontalScrollBar = True
.DisplayVerticalScrollBar = True
.DisplayWorkbookTabs = True
End With
Application.DisplayNoteIndicator = True
ActiveWorkbook.Save
'Thoát
Application.Quit
End Sub

Sub Cocontrai(cot As Integer)
'Thông báo những tháng có con trai với tuổi người phụ nữ
Dim i As Integer
Dim kq
kq = "Với tuổi " + Str(cot + 17) + " thì thụ thai vào các tháng:"
For i = 2 To 12
If Sheets("Bảng gốc").Cells(i, cot) = "T" Then
kq = kq + Str(i) + ","
End If
Next
kq = Left(kq, Len(kq) - 1)
MsgBox (kq + " sẽ có con trai. Các tháng còn lại sẽ sinh con gái.")
End Sub
Function thu(ngay As Date) As String
'Hàm trả về là thứ trong tuần khi biết ngày
Dim kq
Select Case WeekDay(ngay)
Case 1
kq = "Chủ nhật"
Case 2
kq = "Thứ hai"
Case 3
kq = "Thứ ba"
Case 4
kq = "Thứ tư"
Case 5
kq = "Thứ năm"
Case 6
kq = "Thứ sáu"
Case 7

kq = "Thứ bảy"
End Select
thu = kq
End Function
Sub nhapngay()
'Thủ tục chỉnh ngày hệ thống
Dim Co
Dim Ngaymoi
Co = MsgBox("Ngày hôm nay là: " + thu(Date) + " ngày " + Format(Date, "dd/mm/ yyyy") + Chr(13) + "Bạn có
muốn chỉnh lại không ?", 292, "Chỉnh ngày trước khi xem")
If Co = 6 Then
n:
Ngaymoi = Format(InputBox("Nhập ngày mới:", "Nhập ngày", Date), "dd/mm/yyyy")
If Ngaymoi <> "" Then
If Not IsDate(Ngaymoi) Then
MsgBox ("Nhập sai ngày. Xin nhập lại.")
GoTo n:

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×