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: FileClose
- 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
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:
- Giao trinh Lap Trinh VBA Khoi.doc