Giáo trình Lập trình VBA

I. SOẠN THẢO

1. Khái quát một chương trình

a. Cấu trúc của một chương trình

• Một Sub có cấu trúc

Sub Ten_sub(ten_bien As Kieu_du lieu, )

Dim ten_bien1 As Kieu_du lieu, ten_bien2 As Kieu_du lieu

Dim ten_bien3 As Kieu_du lieu, ten_bien4 As Kieu_du lieu

“Thân chương trình”

End Sub

• Một Function có cấu trúc

Function Ten_sub(ten_bien As Kieu_du lieu, )

Dim ten_bien1 As Kieu_du lieu, ten_bien2 As Kieu_du lieu

Dim ten_bien3 As Kieu_du lieu, ten_bien4 As Kieu_du lieu

“Thân chương trình”

End Function

b. Một số thao tác cơ bản

- Gõ kiểu dữ liệu khi khai báo biến hoặc gõ một phần tên kiểu dữ liệu sau đó nhấn Tab để lấy kiểu dữ liệu đã chọn.

- Thêm dấu nháy (‘) trước dòng ghi ghi chú (dòng này có tác dụng khi chạy Macro).

- Đóng Modul: FileClose

- Phép gán biến: Ten_bien1=Ten_bien2

- Nhập giá trị cho biến thông qua hộp thoại: Ten_bien=InputBox(“Yêu cầu nhập liệu”)

- Xuất giá trị hoặc thông báo qua hộp thoại: MsgBox(“Xuất ” & Ten_bien & )

2. Các phép toán

 

doc18 trang | Chia sẻ: lethuong715 | Lượt xem: 819 | Lượt tải: 2download
Bạn đang xem nội dung tài liệu Giáo trình Lập trình VBA, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
số phần tử của mãng.
ReDim Preserver Ten_mang(n,m) As Long --> thay đổi số phần tử và bảo lưu giá trị trước đó của các phần tử.
Option Base 1 --> điều chỉnh giá trị của biên dưới là 1 
Truy xuất
Nhập
For i=1 to n
	Ten_mang( i )=Inputbox(“Thong bao nhap lieu”)
Next 
Xuất
For i=1 to n
	Msgbox(“Xuat” & Ten_mang( i ))
Next 
DÙNG HÀM CỦA EXCEL
Có hai loại hàm: hàm của VBA (ngôn ngữ lập trình) và hàm của bảng tính ví dụ: hàm trung bình Average, hàm tổng Sum, hàm thống kê ...
Cách sử dụng hàm của bản tính: Application.WorkSheetFunction.[Tên hàm]
Cú pháp: Bien=Application.WorkSheetFunction.[Tên hàm](doi_so)
CÁC CÂU LỆNH VỚI ĐỐI TƯỢNG TRONG EXCEL
Thao tác đối với Sheet (Với k là số nguyên)
Worksheets(“Sheetk”).Select	Thủ tục chọn “Sheetk” làm Sheet hiện hành
Sheets("Sheetk").Select	Thủ tục chọn “Sheetk” làm Sheet hiện hành
Sheets(k).Select	Thủ tục chọn Sheet thứ k làm Sheet hiện hành
Bien=Worksheets(k).Name	Hàm lấy tên Sheet thứ k
Worksheets(k).Name = “ten_moi”	Đổi tên Sheet thứ k thành “ten_moi”
Worksheets.Add	Thủ tục thêm Sheet	
Worksheets.Copy	Thủ tục copy
Bien=Worksheets.Count	Hàm đếm số Sheet hiện có trong Workbook hiện hành	
Worksheets.Delete	Thủ tục xóa Sheet hiện hành
Thao tác đối với ô, vùng (khối) (Ta có thể thay tiêu đề cột – dòng bằng các biến có kiểu dữ liệu phù hợp)
CELL
Cells(vt hang, vt cot).Select	Chọn ô có vị trí tương ứng làm ô hiện hành
VD: Cells(4, 1).Select	Chọn ô A4 là ô hiện hành
 Cells(k).Select	Chọn ô có vị trí cột thứ k, vị trí hàng thứ 1.
Cells(4, "A").Select	Chọn ô A4 là ô hiện hành
Cells(4, "A")=Gt	Gán giá trị vào ô A4
ActiveCell.Value = Gt	Gán giá trị vào ô hiện hành
Sheets(k).Cells(8, "B").Value = 53 Gán giá trị cho ô B8 ở sheet thứ k bằng 53
Bien = Cells(4, "A").Value	Gán giá trị ở ô A4 cho biến
RANGE
Range("C2").Activate	Chọn ô C2 làm ô hiện hành
Range("C2").Select	Chọn ô C2 làm ô hiện hành
Range("C" & 2 & ":" & "D" & 4).Select	Chọn ô C2 làm ô hiện hành
Range("C2:D4").Select	Chọn vùng C2:D4 làm vùng hiện hành
Range("C2").Value=Gt	Gán giá trị vào ô C2
DẠNG KHÁC
Selection.Offset(R,C).Select	Di chuyển sang phải C cột và xuống dưới R dòng
VD:	Selection.Offset(0, 1).Select	Di chuyển sang phải một cột
Selection.Offset(1, 0).Select	Di chuyển xuống dưới một dòng
Range("A1:A2", "C1:C2").Columns.AutoFit	Làm khít cột cho vùng A1:A8 và C1:D8
Range("A1:A2", "C1:C2").Rows.AutoFit	 Làm khít dòng cho vùng A1:A8 và C1:D8
Range("A1:A2", "C1:C2").Font.Bold=True Đổi Font, kiểu chữ cho vùng A1:A8 và C1:D8
D1=Range("A1:D2").Row	Trả về vị trí dòng bắt đầu của khối
S_D1=Range("A1:D2").Rows.Count	Tìm tổng số dòng trong khối
C1=Range("A1:D2").Column	Trả về vị trí cột bắt đầu của khối
S_C1=Range("A1:D2").Columns.Count	Tìm tổng số cột trong khối
Range(“C5:E7”).Cells(2,2) xem vùng C5:E7 là bảng tính, lấy ô Cells(2,2) trong bảng tính đó để thực hiện.
VD: Range(“C5:E7”).Cells(2,2).Value=500 Cho giá trị 500 vào ô D6
Copy, Paste, gán công thức – giá trị 
Giá trị
Chọn ô (vùng) cần Copy: Cells(1, "C").Select Hoặc Range("A1:C2").Select
Ra lệnh Copy: Selection.Copy
Hoặc:	Copy trực tiếp: Cells(1, "C").Copy
Range("A1:C2").Copy
Chọn vùng cần Paste: Range("C3:D5").Select
Ra lệnh dán: ActiveSheet.Paste
Công thức
Tham chiếu kiểu A1
Dim formula_str As String
formula_str = “=Congthuc(doi_so)”
Cells(vt_hang, vt_cot).Formula=formula_str 
Sheets(ss).Cells(8, "E").Formula = formula_str 
Tham chiếu kiểu R1C1
R: Row
C: Column
- Tham chiếu tương đối tới ô khác so với ô chứa công thức: R[n]C[m]
- Tham chiếu tuyệt đối dùng dạng: RnC[m], R[n]Cm, RnCm
- Tham chiếu cùng cột: RkC
- Tham chiếu cùng hàng: RCk
Save và Close
WorkBook(“ten_WorkBook).Activate 
For k=1 to 3
	If Workbooks(k).Saved= True Then Workbooks(k).Close
Next
TẠO FORM TRONG EXCEL
Để tạo nút điều khiển trong Excel, bạn hãy:
Mở thanh cộng cụ Control toolbox: View à ToolsBars àControl toolbox
Chọn nút Command button sau đó rê trên vùng làm việc của Excel tạo nút lệnh (Có thể R_Click Chọn Properties để đổi Caption lại_đổi Fonts).
Nhấp đúp vào nút lệnh sẽ xuất hiện vùng soạn thỏa Code để viết chương trình cho nút lệnh.
TẠO FORM TRONG POWERPOINT
Mở thanh cộng cụ Control toolbox: View à ToolsBars àControl toolbox
Tạo đề
Chọn nút Lable sau đó rê trên vùng làm việc của Excel (Có thể R_Click Chọn Properties để đổi Caption lại_đổi Fonts) để tạo nhản.
Chọn nút Textbox sau đó rê trên vùng làm việc của Excel (Có thể R_Click Chọn Properties để đổi tên Name lại_dùng để sau này làm tên biến) để nhập giá trị cho biến và xuất kết quả khi trình chiếu.
Lời giải
Bạn có thể tạo nút lệnh giống như của Excel hoặc có thể dùng Lable để làm nút điều khiển cho việc chạy chương trình_giải một bài toán (Ngôn ngữ lập trình VBA)
Nhấp đúp vào nút lệnh (Lable để lập trình cho bài toán).
Lưu ý:
Tên các biến là tên Name của các Textbox.
Các biến nhận giá trị trong chế độ trình chiếu, khi ta nhập giá trị vào các Textbox.
Chương trình được chạy và cho kết quả khi la Click chuột vào nút lệnh (hay Lable) có chứa mã nguồn.
Kết quả được xuất ra qua các Textbox, trong Textbox không có chế độ xuống dòng (nếu kết quả hơn một dòng ta có thể vào Properties vào ScrollBars chọn chế độ 1 để tạo thanh trược).
Nếu muốn xuất kết quả ra nhiều dòng, ta dùng nhiều Textbox (chú ý: mỗi khi bắt đầu chạy ta nên gán giá trị các textbox bằng rỗng “” để không còn giá trị cũ khi chạy lần sau).
Màn hình soạn thảo của Powerpoint
TextBox 
Nhập
Lable
TextBox Xuất
Lable
Mã nguồn
Bảng Proerties
Đổi Font
Tên biến
Màn hình dùng để soạn mã nguồn
Màn hình khi chạy
Nhập liệu
Xuất
(CÁC NÚT LỆNH TRONG THANH CONTROL TOOLBOX)
1. FLASH
2. IMAGE
3. LABLE-BUTTON
4. WINDOW MEDIA PLAYER
5. OTIONBOX-CHECKBOK
6. SPEREADSHEET
7. SPIN BUTTON
8. TEXTBOX
 B. MODUL TRONG ACCESS
I. KHÁI NIỆM.
Module là một thành phần của Access cho phép người lập trình tạo ra các Hàm, Thủ tục dùng để điều khiển chương trình, xử lý dữ liệu một cách linh hoạt hơn, chuyên nghiệp hơn. Người ta còn gọi việc tạo Module là viết code cho chương trình, về mặc ý nghĩa và mục đích nó giống như viết một chương trình con trong ngôn ngữ Pascal , C , Foxpro ... Có 2 loại:
-Thủ tục (Procedure) : là đọan chương trình dùng để xử lý một công việc nào đó
	+Thủ tục chung: dùng cho tất cả các đối tượng
+Thủ tục gắn liên với đối tượng riêng lẽ: chúng ta thường bắt gặp loại này khi viết code cho các sự kiện (Event) 
-Hàm (Function): là một đọan chương trình khi thi hành sẽ trả về một giá trị nào đó thông qua tên của hàm, có hai loại hàm
+Hàm do Access tạo sẳn, ví dụ: len(), sqr() ... 
+Hàm tự tạo: nhằm phục vụ cho mục đích riêng biệt mà người lập trình muốn tạo riêng cho mình sử dụng, ví dụ hàm doctien() 
II. CẤU TRÚC CỦA THỦ TỤC, HÀM
Thủ tục	-Hàm
Private Sub TenThuTuc()	Public Function TenHam()
	. . . . 	. . . .
 	. . . .	. . . .
End Sub	End Function
III. GIỚI THIỆU MỘT SỐ CÂU LỆNH CƠ BẢN TRONG MODULE
A.LỆNH KHAI BÁO BIẾN: 
Dim TenBien As KieuBien
Ý nghĩa: Thông báo cho Access biết biến nhớ có tên là TenBien sẽ chứa được những dữ liệu có kiểu là KieuBien. Ví dụ: Dim hoten As string
Các kiểu biến đơn giản: 
- Byte : Kiểu số nguyên (0-255) -Date: Kiểu ngày giờ -String: kiểu chuỗi
- Currency:Kiểu tiền tệ -Integer: số nguyên ngắn -Single: kiểu số thực
- Boolean:Kiểu logic (True/False) -Long Integer: số nguyên dài -Double: kiểu số thực 
B.LỆNH RẼ NHÁNH:
1.Cấu trúc IF. . . END IF 2. Cấu trúc SELECT . . . CASE
-Cú pháp:
SELECT CASE
CASE , , . . .
	 . . .
CASE , , . . . 
 . . . 
CASE , , . . . 
	 . . .
CASE ELSE
END SELECT
IF THEN
. . . .
[ ELSE IF THEN 
 . . . ]
ELSE
 . . . .
END IF
-Ví dụ 1: a=3
 b=6
 IF b < a THEN
 c=b+3
 ELSE
 c=b - a
END IF
Khi đó kết quả: c=3
-Ví dụ 2: 
Dim Number
Number = 8 
Select Case Number 
Case 1,2,3,4
 Debug.Print "So tu [1-4]"
Case 5 to 8 
 Debug.Print "So tu [5-8]"
Case 9 To 10 
Debug.Print "So > 8"
Case Else 
 Debug.Print "So khac[1-10]"
End Select
C. LỆNH VÒNG LẶP
1.Cấu trúc FOR . . . NEXT :Cú pháp	
Trong đó:
i: Biến điếm kiểu số nguyên
Start: Giá trị kh đầu của i
End : Giá trị kết thúc của i
StepValue: là bước nhảy của counter sau mỗi lần lặp. Nếu không chỉ định thì mặc nhiên mỗi bước nhảy là 1
FOR i=Start To End [Step StepValue]
. . . .
[EXIT FOR]
NEXT [ i ]
Ví du 3: m=2
	For i = 1 to 7
	 m=m+1
	Next	
2.Cấu trúc DO . . . LOOP : Có 2 dạng
Do
 [Câu lệnh]
[Exit Do]
 [Câu lệnh]
Loop [{While | Until] Điều kiện]
Do [{While | Until] điều kiện]
 [Câu lệnh]
[Exit Do]
 [Câu lệnh]
Loop
Ví dụ 4:
Dim x , y As Integer
x=2
y=0
Do While x < 7
If (x Mod 2 = 0) Then 
y=y+1 
End If 
x=x+1
Loop 
y=y/2
Ví dụ 5:
Dim x , y As Integer
x=2
y=0
Do 
If (x Mod 2 = 0) Then 
y=y+1 
End If 
x=x+1
Loop Until x >=7
y=y/2
D.LỆNH HIỆN DỮ LIỆU RA MÀN HÌNH
Cú pháp: MsgBox sChuoi
Ý nghĩa: Hiện nội dung của sChuoi ra màn hình
sChuoi có thể là chuỗi kí tự hoặc chuỗi số. Trong trường hợp sChuoi là một số thì Access sẽ tự động chuyển sang chuỗi trước khi hiện lên màn hình. 
E.LỆNH LẤY DỮ LIỆU NHẬP TỪ BÀN PHÍM
Cú pháp: Bien = InputBox (Message, Title)
Ý nghĩa: Hiện lên một hộp thoại có tiêu đề là Title và câu nhắc Message và một Textbox để nhập liệu vào, khi bấm nút OK thì dữ liệu nhập vào từ bàn phím được đưa vào lưu trữ trong Bien.
F. LỆNH DOCMD
Cú pháp: DoCmd.ActionMacro CacThamSoCuaMacro
Ý nghĩa: Lệnh này cho phép Module có khả năng thực hiện các hành động (Action) của Macro ngay trong thủ tục mà không cần phải thiết kế Macro.
IV. TẠO MODULE
1.Tại cửa sổ Database\Module\New. Khi đó sẽ xuất hiện màn hình Aceess Basic để thiết kế Module gồm thủ tục (Sub) và hàm (Function)
Danh sách các thủ tục-hàm trong Module hiện tại
2. Để thêm một thủ tục-hàm, ta làm như sau: chọn Insert\Procedure để hiện ra màn hình
Kiểu Thủ tục
Kiểu hàm
Dùng chung
Dùng riêng
Tên thủ tục hoặc Hàm
3.Để chạy một Thủ tục ta để con trỏ nằm trong vùng của thủ tục đó hay chọn tên thủ tục từ danh sách các thủ tục; bấm nút Run
4.Bấm nút Save để lưu Module
 V.MỘT SỐ LƯU Ý KHÁC
1.Sự khác n

File đính kèm:

  • docGiao trinh Lap Trinh VBA Khoi.doc
Giáo án liên quan