Ví dụ, một ô cell được chọn selected ở hiện tại sẽ không được ghi cho đến khi bạn thực hiện công việc trong ô đó.. Vì vậy, những ô trong Worksheet đó sẽ thực hiện khi bạn cho chạy macro,
Trang 1BÀI 1 GHI VÀ THỰC HIỆN MACRO
I Macro là gì?
Macro là tập họp một số các dòng lệnh
Bạn sử dụng chức năng Macro Recorder là một ý tưởng hay để từng bước thực hiện các công việc, nhất là lúc đầu tìm hiểu về macro Excel đã hỗ trợ ghi lại (recorder) các công việc bạn đã thực hiện và chỉ không ghi lại khi bạn dừng ghi
Ví dụ, một ô (cell) được chọn (selected) ở hiện tại sẽ không được ghi cho đến khi bạn thực hiện công việc trong ô đó Ngoài ra, Excel cũng không ghi lại các công việc khi đang sử dụng bảng điều khiển (dialog box) cho đến khi bạn ấn nút OK trên bảng điều khiển đó
Hình 1: Thực hiện ghi macro
Hình 2: Cửa sổ Record Macro
Trong suốt thời gian ghi, macro đã được lưu lại với tên xác định trong module, module được tạo ra trong quá trình ghi và là một phần của Workbook Marco được ghi lại có thể được lưu trong This Workbook (Workbook hiện hành), New
Trang 2Workbook (Workbook mới) hoặc trong Personal Macro Workbook (những macro
sở hữu riêng) Những lệnh (code) được lưu trong Personal.xls, những macro sở hữu riêng đều sử dụng được khi bạn mở Excel ra Các macro trong các Workbook khác nhau có thể sử dụng bất cứ lúc nào khi các Workbook đang mở (kể cả sử dụng chúng từ Workbook khác)
Điều kiện để có thể tiến hành ghi macro:
1 Bảng tính Excel hiện hành (Activate Excel)
2 Sử dụng Workbook mới
II GHI MACRO
1.Ghi macro trong trường hợp sử dụng tham chiếu địa chỉ ô tuyệt đối.
Bạn hãy ghi lại macro trình bày tên bạn và địa chỉ như sau:
1 Trong Tools/Macro, chọn Record New Macro (hình 1)
2.Trong Macro name: gõ Address_abs để đặt tên macro đó (hình 2)
Đặc điểm là ký tự đầu tiên là của tên macro phải là chữ Còn các ký tự khác có thể là chữ, số hoặc ký tự gạch dưới (ký tự _) Các ký tự đặc biệt như khoảng trống (Space), @, %, $, #, &, không được chấp nhận, bạn có thể dùng ký tự _ để tách tên trong macro
Hình 3: Quá trình ghi
Trang 33 Chuyển sang Shortcut key: để trống (sẽ thực hiện sau).
4 Trong Store macro in: để mặc định là This Workbook
5 Trong Description: bạn gõ nội dung sau
Enter address starting in cell B3
12 Trong Stop Recording, bấm vào nút Stop Recording
Như vậy, macro có tên Address_abs đã được ghi lại Những ô mà bạn đã sử dụng trong quá trình ghi được thể hiện dưới dạng địa chỉ tuyệt đối Vì vậy, những ô trong Worksheet đó sẽ thực hiện khi bạn cho chạy macro, tên, lớp và tên trường sẽ được tạo ra đúng vị trí trong Worksheet
2 Ghi macro trong trường hợp sử dụng tham chiếu địa chỉ ô tương đối
Macro Address_abs sử dụng địa chỉ ô tuyệt đối Tiếp theo bạn sẽ tạo một macro cũng giống như trên Macro trước đã chọn các ô (select cells) có quan hệ với
vị trí của ô hoạt động (active) trong quá trình chạy, macro sẽ ghi lại quan hệ tham chiếu ô tương đối
1 Chọn Sheet1
2 Bấm vào ô B11
3 Trong menu Tools/Macro, chọn Record New Macros (hình 1)
4 Trong Macro name: gõ Address_Ref để đặt tên macro đó (hình 2)
5 Trong Shortcut key: Gõ chữ A, như vậy phím tắt sẽ là Ctrl+Shift+A (Nếu phím tắt bị trùng với phím có sẵn thì Excel tự động bổ sung thêm phím Shift như trường hợp này)
6 Trong Store macro in: để mặc định là This Workbook
7 Trong Description: bạn gõ nội dung sau
Enter address starting in activate cell position
Trang 4Microsoft Excel sẽ tiếp tục ghi macro với quan hệ tương đối cho đến khi nào thoát khỏi Microsoft Excel hoặc bạn ấn lại vào nút Relative Reference.
11 Gõ tên bạn, lớp, tên trường và địa chỉ trong các ô B11, B12, B13 và B14 Nội dung thể hiện như sau:
Nguyen Van Hung
Lop DCCT-DKT K48
Truong DH Mo Dia chat
xa Dong Ngac, Tu Liem, Ha Noi
12 Cho toàn bộ các chữ đậm
13 Bấm vào ô B15
14 Trong Stop Recording, bấm vào nút Stop Recording
Ghi chú: Nếu bạn muốn macro chọn ô đặc biệt, đầu tiên chọn ô đầu (active cell), sau đó chọn ô có quan hệ với ô đầu, bạn có thể lựa chọn hỗn hợp địa chỉ tuyệt đối và tương đối trong quá trình ghi macro
Để sử dụng tham chiếu tương đối trong suốt quá trình ghi macro, nút Relative Reference luôn sáng (có tác dụng)
Để sử dụng tham chiếu tuyệt đối trong suốt quá trình ghi macro, nút Relative Reference luôn tối (không tác dụng)
III CHẠY MACRO
1 Chạy macro khi sử dụng bảng điều khiển macro (Macro dialog box)
Bạn cho chạy macro trên từ Sheet2 như sau:
1 Chọn sang Sheet2 và bấm vào ô nào đó ngoài ô B3
2 Trong menu Tools/Macro, chọn Macros (hình 1)
3 Bấm vào macro có tên Address_abs trong danh sách macro (hình 4)
4 Bấm vào nút Run
Sau đó bạn sẽ thấy nội dung ở Sheet2 giống như ở Sheet1
Trang 5Hình 4: Chạy macro ở Sheet2
Ghi chú: Nếu bạn muốn huỷ quá trình chạy macro trước khi kết thúc, ấn vào nút Esc
2 Dùng phím tắt để thực hiện một macro (shortcut key)
Macro Address_Ref có thể thực hiện như mô tả trong mục 2.2 Lúc trước
phím tắt đã được ấn định để thực hiện công việc đó, hãy sử dụng phương pháp thay thế này:
1 Tại Sheet2 bạn chọn vào 1 ô (ví dụ ô H14)
2 Ấn tổ hợp phím Ctrl+Shift+A Khi đó tên và địa chỉ sẽ xuất hiện dưới ô đó
3 Bạn hãy thử thực hiện lại macro đó tại các vị trí khác trong Sheet2
3 Thực hiện macro từ một đối tượng đồ hoạ trong worksheet
Bạn có thể dùng đối tượng đồ hoạ trong worksheet để thực hiện một macro
1 Chọn Sheet3, nơi mà còn trống
2 Vào menu View/Toolbars và bạn chọn Drawing (trừ trường hợp thanh công cụ Toolbar đã có trên màn hình)
Trang 63 Chọn đối tượng đồ hoạ như hình Oval và vẽ hình oval đó.
4 Gõ chữ vào hình oval đó bằng cách ấn phải chuột vào rồi chọn Add Text từ thực đơn tắt (hình 5)
5 Gõ nội dung Address rồi bấm ra ngoài để thoát
6 Bạn có thể thay đổi kích thước hình oval cho phù hợp để thể hiện đủ nội dung chữ ở trong và tính mỹ thuật
7 Ấn phải chuột vào hình oval đó, chọn Assign Macro
8 Trong bảng Assign Macro, chọn macro có tên Address_Ref.
9 Sau đó ấn OK
Sau đó, bạn cho thực hiện thử macro:
1 Chọn 1 ô nào đó (ví dụ như ô J13)
2 Bấm vào hình oval trên, macro sẽ thực hiện
Ghi chú: Nếu bạn muốn di chuyển đối tượng đồ hoạ (có macro) ra khỏi chỗ khác trong worksheet, sử dụng phải chuột để di chuyển (vì bấm trái chuột thì macro sẽ chạy) Còn nếu bạn muốn thay đổi macro khác thì bạn bấm phải chuột trên đối tượng, chọn Assign Macro và lựa chọn macro nào bạn muốn
Hình 5: Gán macro vào hình oval
Trang 74 Chạy macro từ nút lệnh trên thanh công cụ
Ngoài ra, có thể chạy macro từ nút lệnh (button) trong các các thanh công cụ
tự tạo (custom toolbar) Ví dụ như có thể ấn định macro Address_abs trong nút hình mặt cười (Smiley Face) như sau:
1 Di chuyển chuột đến một điểm nào đó trong các thanh toolbar
2 Ấn phải chuột, trong thực đơn tắt chọn Customize
3 Trong bảng Customize, chọn tab Toolbars (hình 6)
4 Chọn nút New
5 Sau đó bảng New Toolbar xuất hiện và bạn gõ tên vào (Macro1) rồi OK
6 Trong bảng Customize, chọn tab Commands (hình 7)
7 Trong hộp Categories, chọn AutoShapes
8 Trong Commands, cuộn xuống cho đến khi bạn chọn được hình ưng ý (Smiley Face)
9 Tại hình Smiley Face, giữ trái và kéo chuột vào trong thanh công cụ Macro1 (hình 8) Bạn có thể chọn thêm các biểu tượng khác nếu cần
10 Bấm phải chuột vào nút Smiley Face, thực đơn tắt sẽ hiện ra Bạn có thể sửa hay xoá hình đó và thay bằng các hình khác
11 Chọn Assign Macro trong thực đơn tắt, chọn macro Address_abs và ấn OK
12 Đóng bảng Customize vào
Hình 6: Tạo thanh công cụ mới
Trang 8Hình 7: Gán hình vào nút lệnh mới
Hì
nh 8: Tạo các nút lệnh trong thanh Macro1 và gán Assign Macro vào
Trang 9Ghi chú: Thanh công cụ tự tạo thuộc sở hữu của workbook mà nó được tạo ra.Bạn hãy thử sử dụng nút lệnh vừa tạo ra để thực hiện công việc như sau:Code:
1 Xoá sạch nội dung của Sheet2
2 Bấm chuột vào nút Smiley Face trong thanh công cụ Macro1
Kết quả sẽ thể hiện trên Sheet2
5 Chạy macro từ lệnh trong menu của Excel
Từ menu của Excel bạn có thể thêm các menu mới mà khi lựa chọn chúng thì macro sẽ chạy Ví dụ: Tạo menu mới có tên là Work Address có thể chứa menu con Macro2 trên thanh tiêu chuẩn như sau:
1 Phải đảm bảo rằng workbook đang chứa macro của bạn đang hoạt động
2 Thêm một worksheet mới bằng cách vào menu Insert/Worksheet (đặt là Sheet4)
3 Trong menu Tools/Customize, chọn tab Commands trong bảng Customize
4 Cuộn xuống dòng cuối cùng và chọn New Menu trong Categories (hình 9)
5 Giữ trái chuột ở New Menu trong Commands và kéo vào dòng menu cạnh Help
6 Ấn phải chuột vào New Menu trong menu của Excel, thực đơn tắt hiện ra
7 Thay tên mới trong Name là &Macro2 Nếu chỉ cần 1 menu này thì bấm vào Assign Macro để chọn (hình 10) Còn nếu cần thêm các menu con (menu item) thì không cần
Hình 10: Tạo menu Maro2 trong menu của Excel
Trang 10Ký tự và (&) trước M sẽ gạch chân chữ M trong menu Macro2 (trở thành Macro2), đó chính là phím tắt để chạy macro Macro2 (chỉ cần ấn Alt+M) Tiếp theo ta tiến hành tạo menu con trong Macro2:
1 Trong Categories (trong trường hợp bảng Customize vẫn đang mở), chọn Macros
2 Tại Commands, chọn Custom Menu Item (hình 11), giữ trái và kéo chuột đến phần trống ở dưới Macro2 (vùng được khoanh đỏ)
3 Bấm phải chuột vào Custom Menu Item trong menu mẹ Macro2
4 Tại thực đơn tắt, đổi tên trong Name thành &Work Address (hình 12)
5 Sau đó vào Assign Macro để chọn macro chạy
6 Cuối cùng là đóng bảng Customize
Hình 11: Tạo các menu con
Trang 11Hình 12: Đổi tên menu con và gán Assign Macro cho nó.
Menu mới tạo được lưu giữ trong workbook đó Kể cả bạn đã đóng workbook nhưng khi bạn bấm vào menu thì workbook chứa menu đó tự động mở ra và thực hiện lệnh luôn
Trang 12BÀI 2 CHỈNH SỬA MACRO
1 Thay đổi lựa chọn trong macro
Nếu bạn muốn thay đổi các lực chọn chi tiết trong macro, bước đầu tiên bạn vào menu Tools/Macro và chọn Macros Sau đó chọn tên macro mà bạn muốn thay đổi và bấm vào nút Option Bạn có thể thay đổi phím tắt và mô tả lại công việc macro trong Description
2 Sửa mã nguồn macro
Khi bạn ghi macro đầu tiên, Excel tạo ra molule trong workbook đó Module
đó chứa các lệnh (code) được viết trong VBA Các bước thực hiện để nhìn thấy module:
1 Từ menu Tools/Macro chọn Macros
2 Chọn macro Address_abs và bấm vào nút Edit
Cửa sổ Microsoft Visual Basic hiện ra như hình 13 Bạn có thể thấy rõ được các dòng code từng macro khi cuộn xuống
a Dạng form chung (General form)
Từ khoá (keywords) là số hạng đặc biệt trong VB, được thể hiện bằng màu xanh lá cây Tất cả các macro đều bắt đầu với Sub và kết thúc bởi End Sub (còn gọi là thủ tục)
Dòng màu xanh đó với dấu ‘ ở đầu dòng được gọi là chú thích (comments) Lời chú thích không anh hưởng đến macro và bạn có thể thay đổi nội dung của nó Tên của macro và lời mô tả sử dụng (description) trong quá trình ghi macro xuất hiện dưới dạng chú thích Bạn có thể dùng comments để chú thích trong quá trình xây dựng macro Khi đó bạn sẽ dễ dàng hiểu được các bước cũng như nội dung thực hiện macro
Đường đen liền có ý nghĩa phân chia các macro, function (hàm) trong module Đường gạch dưới (_) thỉnh thoảng gặp ở cuối dòng code Khi code quá dài thì dùng (_) để xuống dòng, nhưng được hiểu là code vẫn liên tục
Khi bạn ghi macro phức tạp hơn, bạn có thể gặp một số code không phải là bản chất của nó (essential) Excel ghi lại tất cả những gì bạn thực hiện một cách cụ thể nhất, kể cả những đối số (arguments) cài đặt mặc định trong Excel đã sử dụng Khi bạn di chuyển chuột đến macro nào thì tên của macro đó hiện ở phần khoanh
đỏ như hình 13 (Addres_Ref)
Trang 13Hình 13: Cửa sổ Microsoft Visual Basic.
b Tạo ra những thay đổi
Trong cửa sổ Visual Basic Editor(VBE) (hình 13) có các module Có thể coi module là nơi lưu trữ các thủ tục (sub) và hàm (function) Đây cũng là nơi khai báo các hằng số, biến số, kiểu dữ liệu người dùng Mỗi module có thể chứa một hay nhiều Sub hoặc Function Phần cửa sổ chính hiện nội dung code trông gần giống như Word, bạn có thể dễ dàng tạo những thay đổi trong đó, như bổ sung hay bớt đi nội dung nếu thấy cần thiết
Ví dụ, bạn có thể thay đổi tên macro Address_abs thành Dia_chi chẳng hạn, chỉ cần gõ nội dung Dia_chi thay thế Address_abs trong Sub Address_abs() Khi con chuột nằm trong macro Dia_chi, bạn vào Run và chọn Run Sub/UserForm (phím tắt F5) Để xem kết quả như thế nào thì bạn vào View/Microsoft Excel (phím tắt Alt+F11) Lúc đó của sổ VBE vẫn hiện hữu trong Task bar
Để đóng cửa sổ VBE và trở về Excel, bạn vào menu File, sau đó chọn Close and Return to Microsoft Excel (phím tắt Alt + Q)
Trang 14Ghi macro và xem lại những gì nó thực hiện là cách học rất hay, giúp các bạn
có thể học hỏi thêm nhiều lệnh, nhiều đối tượng và các thuộc tính của nó, hiểu rõ trình tự các bước thực hiện Nhưng đến một lúc nào đó, bạn muốn viết một macro cho riêng mình hoặc bổ sung thêm một vài code trong macro hiện tại để thực hiện các bài toán phức tạp hơn Khi đó việc sử dụng ghi macro trở nên không hữu dụng nữa
Macro không thể thực hiện được các tác vụ sau:
_Các kiểu vòng lặp
_Các kiểu hành động theo điều kiện (sử dụng If-Then)
_Gán giá trị cho biến
_Các kiểu dữ liệu đặc biệt
_Hiện các thông báo (pop-up messages)
_Hiện các hộp thoại (dialog boxes)
Trong chương dưới đây, bạn có thể tìm được nhiều thông tin về VBA
Trang 15Bài 3 ĐỐI TƯỢNG TRONG EXCEL
1 Các đối tượng (Objects)
Visual Basic là ngôn ngữ lập trình hướng đối tượng (object-oriented) Điều đó
có nghĩa là các thành phần trong Excel có thể coi là các đối tượng Excel có hơn
100 đối tượng Để cho các bạn dễ hình dung chúng ta có thể lấy một ví dụ như sau:
Ta có một chiếc xe máy của Honda, đó có thể xem là một đối tượng Honda có nhiều chủng loại xe máy như Future, Future II, Future neo; Super Dream; Wave anh-pha Vậy ta có thể xem Xe máy của hảng Honda là một tập hợp, trong tập hợp này có các đối tượng cùng nằm trong một nhóm như Future, Future II, Future neo
Ví dụ dưới đây là những đối tượng trong Excel:
• the Excel application (là ứng dụng trong Excel- đối tượng lớn nhất- hình 14)
• a workbook (chính là file excel)
• a worksheet (là các sheet trong workbook)
• a range (là vùng)
• a chart (là biểu đồ)
Hình 14: Các đối tượng trong Excel
Trang 16Bạn có thể coi những đối tượng trên như là danh từ (ví dụ: cái bánh là danh từ) Trong macro bạn lập, mà Range(“B3”) chính là đối tượng.
Đối tượng này có thể chứa các đối tượng khác ở trong nó Đối tượng Application ở bậc cao nhất (đối tượng mẹ), bao gồm toàn bộ đối tượng trong Excel Những thay đổi xảy ra trong đối tượng Application ảnh hưởng đến toàn bộ nội dung trong nó Đối tượng Application có chứa đối tượng cũng lớn như Workbooks Ví dụ như sau:
Application.Workbooks đề cập (refer) đến tất cả workbook đang mở trong
Excel
Workbooks.Item(1) đề cập đến workbook đầu tiên và thường được gọi tắt là
Workbooks(1)
Workbooks(“Seles.xls”) sẽ đề cập đến workbook tên đó.
Trong workbook thường chứa các worksheet, trong mỗi worksheet đó chứa nhiều ô (cell) Bạn có thể đề cập đến ô B3 như sau
Workbooks(“Seles.xls”).Worksheets(“Sheet1” ).Range(“B3”)
Trong lúc workbook đang làm việc thì nó được gọi là active workbook (workbook hiện hành), worksheet nào đang hiển thị thì được gọi là active worksheet Nếu bạn có vài worksheet đang hiển thị, worksheet nào đang có trỏ (cursor) ở trong nó thì được gọi là avtive Nếu bạn có vài workbook đang hiển thị, workbook nào đang chứa active worksheet ở trong nó thì được gọi là avtive workbook
Nếu bạn không muốn thực hiện riêng trên workbook hay worksheet nào, VBA
sẽ thực hiện trên active workbook hay active worksheet (mặc định) Còn nếu bạn thực hiện theo ý muốn, thì cần thực hiện như ở trên (Range(“B3”))
Còn Sheets lựa chọn toàn bộ sheet trong workbook, kể cả chart sheets (biểu
đồ) và worksheets
Sheet(“Year2006”) sẽ tham chiếu đến sheet có tên là Year2006.
Chart(1) sẽ tham chiếu đến chart sheet theo thứ tự tab.
Trang 17• Select (Lựa chọn)
Các phương thức có thể được coi là động từ (ví dụ: bake là động từ)
Cú pháp của câu lệnh trong VB như sau:
Object.Property = Value hay Noun.Adjective = Value
Với macro trên:
ActiveCell.FormulaR1C1 = “Nguyen Van Hung”
Tất cả các đối tượng đều được thiết lập các phương pháp (methods) và những thuộc tính (Properties) trong chúng
Câu lệnh như: Range(“C3”).ColumnWidth = 14 sẽ thiết lập chiều rộng của
cột chứa ô C3 rộng 14 Excel mặc định chiều rộng của cột là 8.43 điểm (point)
4 Các biến (Variables)
Cũng như các ngôn ngữ lập trình khác, bạn có thể sử dụng các biến trong việc tính toán Bình thường, VBA không yêu cầu khai báo (declare) những biến VBA luôn tự động lưu giữ đối với những biến vào lần đầu tiên bạn sử dụng Những biến được tạo ra tự động là các dạng của biến thể (Variant) và có thể là những kiểu dữ liệu như các chuỗi (strings), số (numbers), giá trị Boolean, các lỗi (errors), các mảng (arrays) hoặc những đối tượng (objects)
Ví dụ dưới đây là khai báo ấn định là số 34 đối với biến X
X = 34
Trong ví dụ dưới đây, biến số Number1 và Number2 được đưa ra ở giá trị ban đầu và sử dụng chúng trong tính toán (vì chúng là số)
Trang 18Number1 = 3
Number2 = 9
Mynumber = Number*Number2
Trang 19BÀI 4 SỬ DỤNG CONTROL TRÊN WORKSHEET
Để sử dụng được các control này các bạn có thể Click phải lên thanh menu và
chọn Control Toolbox như hình 1.
Hoặc các bạn có thể vào View/Toolbars/Control Toolbox Sau khi các bạn
chọn thanh toolbar sẽ xuất hiện
Trên thanh công cụ này chúng ta thấy có các control chính sau:
Các control trên còn gọi là các ActiveX controls Các bạn có tìm các
định nghĩa như hình bên dứơi đây
Hình 1
Trang 20Chúng ta sẽ lần lượt tìm hiểu về các control này.
1.Command Button (Nút lệnh):
Các bạn hãy click vào biểu tượng thứ ba từ trên xuống ở hình bên trái Và vẽ lên worksheet xem sao?
Nếu đây là lần đầu tiên bạn thực hiện, thì bạn làm theo các bước sau:
_Click chọn vào biểu tượng Lúc này biểu tượng con trỏ chuột sẽ thành hình chữ thập Bạn kéo rê vào khu vực mà bạn muốn đặt nút lệnh này Click và giữ chuột phải, vẽ hình nút lệnh Sau khi xong bạn thả chuột phải ra
Bạn hãy thử các bước như trên và lần lượt nhấn các phím Alt, Ctrl, Shift bạn
thấy điều gì xãy ra?
Bạn chọn nút lệnh vừa mới vẽ Click phải chuột và chọn Properties.
Cửa sổ Properties sẽ hiện ra như hình 3
Trang 21Chúng ta sẽ có 2 tab Tab thứ nhất các thuộc tính của đối tượng Command Button sẽ được sắp xếp theo vần ABC Tab thứ hai các thuộc tính sẽ được sắp xếp theo Categorized (có thể hiểu là các thuộc tính được sắp xếp theo tính chất của nó) Như các thuộc tính xác định kích thước của nút lệnh, vị trí của nút lệnh, font chữ, Một số thuộc tính của nút lệnh thường dùng:
_Name: tên của nút lệnh Tên này sẽ được gọi trong VBA Thông thường nút
lệnh sẽ được đặt tên bắt đầu bằng cmd
_Caption: tên được hiển thị trên nút lệnh
_Accelerator: ký tự phím tắt nhằm làm cho việc gọi nút lệnh được nhanh hơn
Nó cũng tương tự khi bạn gọi menu File bằng tổ hợp phím Alt + F.
_PrintObject: có giá trị True/False True nếu bạn muốn khi in ra sẽ thấy nút
lệnh False thì ngược lại
_Enable: True/False, nếu bạn chọn giá trị False cho thuộc tính này thì nút lệnh
sẽ bị mờ đi và người dùng không thể thao tác với chúng
_TakeFocusOnClick: True/False Nếu bạn chọn giá trị False, thì khi bạn Click vào nút lệnh này, con trỏ chuột vẫn ở vị trí trước khi bạn thực hiện Click vào nút lệnh
Còn những thuộc tính khác tôi nghĩ chúng ta không cần
Hình 2
Trang 22Mục đích chính của nút lệnh, như các bạn đã thấy qua tên của nó là nhằm thực
hiện một đoạn lệnh nào đó Ví dụ, các bạn hãy để ở chế độ Design, tức là các bạn
sẽ thấy hình cây thứơc Ekê chìm xuống Các bạn hãy Double Click vào nút lệnh bạn vừa vẽ xong, bạn sẽ được chuyển qua màn hình VBA, với các câu lệnh có sẵn như sau:
Private Sub CommandButton1_Click()
End Sub
Bạn hãy đưa đoạn lệnh này vào trong thủ tục trên
Msgbox”Chào bạn”,vbOKOnly,”Thông báo”
Bây giờ bạn hãy trở về màn hình Excel (Alt + Q) và thoát khỏi chế độ Design (Bạn click vào nút hình cây thước Ekê) Và click vào nút lệnh bạn vừa viết đoạn
mã cho nó, bạn thấy điều gì xãy ra?
2 Text Box:
Nhằm giúp cho người sử dụng nhập vào chuổi ký tự
_Name: tên của Text box, thông thường được bắt đầu bằng txt (Chú ý rằng các Control nào cũng có Tên!)
Hình 3
Trang 23_EnterKeyBehavior: True/False, cho phép hay không cho phép dùng phím Enter.
_Font: Font được dùng cho Text box
_Multiline: True/False, cho nhiều dòng hay không?
_TextAlign: Canh lề
_LinkedCell: ô được link với Text box này
3 Label:
Lưu chuổi ký tự
_Name: tên của Label, thông thường bắt đầu bằng lbl
_Accerlerator: tương tự ở phần Command Button
_Caption: ký tự được thể hiện
Lable là một Control để thể hiện text mà thôi!
_ColumnCount: Số cột được thể hiện
Ví dụ tôi có danh sách khách hàng gồm các cột: Mã khách hàng, Tên khách hàng trong danh sách của Combo box trên Tôi muốn rằng combo box sẽ thể hiện thành 2 cột, và khi tôi chọn thì giá trị lấy về sẽ là cột 1 Tôi sẽ thiết đặt BoundColumn=1 và ColumnCount=2
_LinkedCell: ô liên kết với Combo Box này Bạn hãy thử thuộc tính này của
Combo Box bằng cách, chọn LinkedCell là A1 Rồi thoát chế độ design và thử
Trang 24thay đổi giá trị trong ô A1 xem sao? Sau đó bạn lại thay đổi giá trị trong Combo Box xem sao?
_ListFillRange: danh sách (hay khoảng) mà bạn muốn Combo Box thể hiện Bạn có thể đưa tên vào thuộc tính này Ví dụ: ở sheet2 tôi đặt tên cho khoảng
A4:B5 là danhsachkh.
Sau đó ở thuộc tính này của Combo Box tôi đưa vào danhsachkh.
_ColumnWidth: là độ rộng các cột của Combo Box Các bạn chỉ việc đưa vào
con số cách nhau bằng dấu “;” Ví dụ 100;200 Sau khi bạn chấp nhận việc nhập
vào bằng cách Enter bạn sẽ thấy 100 pt; 200 pt xuất hiện trong thuộc tính này Chú
ý mặc định đơn vị sẽ là Points Chú ý 72 pt tương đương 1”=25.4mm Nếu bạn
không nhập giá trị vào thuộc tính này thì mặc nhiên mỗi cột sẽ có độ rộng là 1.33”
Ví dụ tôi có 3 cột trong một bảng muốn thể hiện Tôi muốn dấu đi cột 2 thì tôi có thể nhập 3 cm; 0; 5 cm
_ListWidth: là độ rộng của danh sách Thông thường bạn nên chọn giá trị của thuộc tính này là tổng của các giá trị trong thuộc tính ColumWidth Tương tự trên
bạn cũng có thể đưa vào giá trị theo đơn vị cm.
_Width: bạn đừng nhằm lẫn thuộc tính này với hai thuộc tính ở trên Đây là thuộc tính xác định độ rộng của Combo Box (chứ không phải danh sách thể hiện hay còn gọi là dropdown list)
_ColumnHeads: True/False, thể hiện tiêu đề cột hay không Trong ví dụ của
tôi, các tiêu đề cột chính là hàng nằm ngay liền bên trên hàng số 4 Tức là: Mã khách hàng, Tên khách hàng.
_Value: giá trị được chọn Chú ý giá trị này là gía trị bạn đã thiết lập ở thuộc tính BoundColumn
_Text: giá trị bạn nhập vào Combo Box
Bạn hãy thử nhập vào các giá trị không có trong danhsachkh xem sao? Có bạn sẽ đặt câu hỏi, tôi chỉ muốn lấy giá trị trong danhsachkh mà thôi Ủa sao vẫn
nhập các giá trị khác được vậy? Muốn vậy chúng ta sẽ đi thêm thuộc tính kế tiếp
đó là thuộc tính Style.
_Style: kiểu của Combo Box Hoặc là kiểu drop-down list hoặc là kiểu combo box Kiểu drop-down list sẽ không chấp nhận đưa vào các giá trị không có
trong danh sách
Trước và sau khi các bạn thay đổi thuộc tính Style này các bạn hãy thử đưa
các giá trị ngoài danh sách vào ô A1 (mà chúng ta đã chọn ở thuộc tính LinkedCell ở trên cho Combo Box) và xem giá trị của Combo Box mỗi khi chúng
ta thay đổi giá trị ra sao?
_ListRow: số trong danh sách được thể hiện Ví dụ trong danhsachkh của tôi
có khoảng 100 danh sách Tôi muốn khi tôi Click vào Combo box thì sẽ thể hiện danh sách 20 khách hàng Tôi sẽ thiết lập thuộc tính này là 20
Trên đây tôi chỉ liệt kê các thuộc tính chính của Combo Box Bạn có thể đọc
thêm trong phần Help
Chúng ta sẽ tìm hiểu một số cách nhằm làm cho Combo Box của chúng ta linh động hơn
Trang 25Có bạn muốn, khi tôi chọn Combo Box thì danh sách sẽ hiện ra giống như khi tôi Click vào nút mủi tên chỉ xuống của Combo Box vậy?
Nếu muốn vậy chúng ta phải viết thêm lệnh cho sự kiện GotFocus của Combo
Box Nếu bạn đang ở chế độ Design thì bạn Double Click vào Combo Box này Màn hình VBE sẽ hiện ra với đoạn mã tương tự như sau:
Private Sub ComboBox1_Change()
End Sub
Bạn không sử dụng sự kiện này của Combo Box, mà bạn sử dụng sự kiện
GotFocus của Combo Box Bạn hãy chọn sự kiện GotFocus và nhập vào đoạn mã
sau
Private Sub ComboBox1_GotFocus()
Application.SendKeys "%{DOWN}"
End Sub
Đoạn mã trên có nghĩa là khi Combo Box được chọn thì chúng ta sẽ dùng
phương thức SendKeys của Application nhằm gởi phím Alt + Phím mủi tên
xuống (Down Key) nhằm cho hiện ra danh sách
Bạn hãy tìm hiểu phương thức SendKeys của đối tượng Application.
Có bạn lại muốn rằng cái Combo Box này phải nằm bên dưới ô tôi chọn, Combo Box này chỉ hiện khi tôi ô trong cột A mà thôi? Thiệt là rắc rối nhỉ?
Bạn hãy thử đọc đoạn mã dưới đây xem:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Hang As Long, Cot As Integer
Dim HangCao As Long, CotRong As Long
Hang = Target.Row: Cot = Target.Column
HangCao = 12.75: CotRong = 8.43
If Cot = 1 Then
Trang 26ComboBox1.Visible = True
ComboBox1.Left = Cot * CotRong
ComboBox1.Top = Hang * HangCao
Else
ComboBox1.Visible = False
End If
End Sub
Tôi xin giải thích Tôi sử dụng sự kiện SelectionChange để thực hiện điều
này Tôi giả sử các cột và hàng có độ rộng là 8.43 và cao là 12.75 (đây là giá trị
mặc định của Excel, bạn có thể biết điều này bằng cách chọn Format/Row/Height hay Format/Column/Width.)
Target là ô mà bạn chọn Để lấy vị trí của ô người dùng chọn, tôi dùng hai biến là Hang và Cot
Hang=Target.Row ‘Nhằm lấy giá trị hàng của Target
Cot = Target.Column ‘Nhằm lấy giá trị cột của Target
Về độ rộng cột và cao của hàng tôi gán giá trị mặc định như sau:
Các bạn hãy quay về màn hình Excel và thử chọn các ô trong Sheet1 xem sao? Các bạn thử thay đổi chiều cao của các dòng và thử lại xem sao?
Có bạn đặt câu hỏi tôi muốn Combo Box của tôi thể hiện chính xác ngay dưới
ô trong cột 1 mà tôi chọn? Vậy xin mời các bạn giải quyết bài toán này
Có bạn lại muốn cái Combo Box của tôi ngoài việc “xuất hiện” còn phải cho “cái focus” của tôi vào cái Combo Box đó để tôi chọn nữa? Thiệt là rắc rối nhỉ?
Bạn hãy thêm đoạn mã này vào sau khi cho Combo Box “Visible=True”
ComboBox1.Activate
Có bạn lại muốn khi tôi chọn xong, “Enter một phát” thì chọn ô bên phải
kế tiếp và cái Combo Box của tôi “biến đi”?
Vâng, lại là một yêu cầu chính đáng!
Các bạn hãy sử dụng sự kiện KeyUp của Combo Box, và bạn phải khai báo lại hai biến Hang và Cot Trong cửa sổ code của Sheet1(*, xin xem phần khai báo biến), bạn khai báo như sau: (Nằm ở trên cùng!)
Option Explicit
Dim Hang As Long, Cot As Integer
Bạn chú ý là khi đã khai báo như trên thì trong đoạn mã của
Worksheet_SelectionChange
Bạn bỏ đi khai báo
Dim Hang As Long, Cot As Integer
Trang 27Khai báo trên nhằm sử dụng lại gía trị các biến Hang và Cot khi cần cụ thể ở
đây tôi muốn sử dụng trong ComboBox1_KeyUp
Đoạn mã trong ComboBox1_KeyUp như sau:
Với chú ý KeyCode=13, có nghĩa là bạn chọn phím Enter.
MSForms.ReturnInteger, ByVal Shift As Integer)
_Name: Tên của ListBox
_BoundColumn: tương tự như ở Combo Box
_ColumnCount: tương tự như ở Combo Box
_ColumnHeads: tương tự như ở Combo Box
_ColumnWidths: độ rộng của ListBox
_IntergalHeight: True/False True, ListBox sẽ tự động điều chỉnh để thể hiện đầy đủ ở dòng cuối khi bạn chọn thanh cuộn theo chiều đứng
_ListStyle: kiểu thể hiện của các Items
_MultiSelect: cho phép chọn một dòng hay nhiều dòng
_ListFillRange: tương tự như ở Combo Box
_Value: tương tự như ở Combo Box
Bạn cũng có thể thao tác tương tự với ListBox như các ví dụ Combo Box ở trên
6 Check Box:
Mục đích của Check Box nhằm dùng để chọn On/Off (tắt mở) hay Yes/No
(Đúng sai)
_Name: Tên Check Box
_Accelerlator: tương tự như ở Command Button
_Caption: chuổi ký tự thể hiện trên Check Box
_LinkedCell: ô liên kết với Check Box
7 OptionButton:
Trang 28GV: Diệp Thanh Toàn
Sử dụng trong một nhóm, người sử dụng có thể chọn một trong một nhóm của OptionButton Trong một nhóm này chỉ có một nút OptionButton là được chọn mà thôi Ví dụ tôi chỉ cho phép người sử dụng lựa chọn tình trạng hôn nhân chỉ là một trong những chọn lựa như: đã lập gia đình, chưa lập gia đình, ly thân, ly dị Trong trường hợp này tôi sẽ sử dụng OptionButton
_Name: tên OptionButton
_Caption: chuổi ký tự thể hiện trên OptionButton
_Group Name: tên nhóm OptionButton
_LinkedCell: ô liên kết với OptionButton
8 SpinButton:
_Name: tên SpinButton
_LinkedCell: ô liên kết với SpinButton
_Max: giá trị lớn nhất
_Min: giá trị nhỏ nhất
_Orientation: chiều của SpinButton
_SmallChange: đơn vị thay đổi mỗi lần click vào nút SpinButton
Ví dụ: tôi muốn giá trị của ô A1, thay đổi từ 0 đến 100 Giá trị mỗi lần thay đổi là 2 thì tôi chọn SpinButton và gán các thuộc tính chính như sau:
Còn những control khác, các bạn hãy thử đặt chúng vào worksheet của bạn, chọn chế độ Design mode và xem các thuộc tính của chúng Các bạn sẽ khám phá
ra các điều thú vị
Trang 28
Trang 29BÀI 5 CÁC YẾU TỐ (ELEMENTS) CHÍNH TRONG VBA
I Sử dụng chú thích trong các đoạn mã VBA
Các bạn có bao giờ phải viết lại các hàm hay thủ tục mà bạn đã viết cách đây lâu rồi không? Chắc chắn các bạn sẽ có đôi khi phải làm điều này Và các bạn sẽ gặp hơi rắc rối nếu trong các đoạn code của các bạn không hề có một lời ghi chú nào! Tôi chắc chắn là thế
Nhằm làm cho các câu lệnh được rõ ràng hơn, dễ sửa chữa hay nhằm giúp cho
x = 0 ‘Gán cho biến x giá trị bằng 0
Msgbox x ‘Hiện gía trị của biến x
End Sub
Các bạn chú ý, trong cửa sổ VBE, thanh công cụ Edit có các nút lệnh giúp cho các bạn sửa chửa các đoạn code của mình dễ đọc hơn
_Dời một đọan mã về phía trái
_Dời một đoạn mã về phía phải
_Đánh dấu cho một đoạn trở thành ghi chú _Tháo bỏ ghi chú cho một đoạn
Các bạn có thể dùng ghi chú cho những trường hợp sau:
Mô tả ngắn gọn (dĩ nhiên bạn có thể mô tả dài !) về mục đích của thủ tục hay hàm
Sử dụng ghi chú mỗi lần bạn có thay đổi trong thủ tục hay hàm
Mô tả biến bạn sử dụng
Ghi lại các quá trình phát triển của tác giả về thủ tục, hàm Ví dụ như: ngày viết, ngày sửa, người tham gia góp ý, các cộng tác viên, vv
II Sử dụng biến, hằng, và kiểu dữ liệu:
Mục đích chính của VBA là thao tác với dữ liệu (data) VBA lưu các kiểu dữ liệu trong bộ nhớ của máy tính
1 Biến
Trang 30Biến, đơn giản chỉ là tên được lưu trong bộ nhớ máy tính Chúng ta có thể phải dùng nhiều biến, chính vì vậy khi đặt tên chúng ta cố gắng đặt tên cho biến một cách ngắn gọn và dể hiểu.
a Nguyên tắc đặt tên cho biến:
Bạn có thể dùng chữ, số, hay các ký tự phân cách nhưng ký tự đầu tiên phải là chữ
Bạn không được dùng bất kỳ khoảng trắng nào trong tên của thủ tục hay hàm
VBA không phân biệt ký tự thường hay hoa
Bạn không được dùng các ký tự sau trong việc đặt tên: #, $, %,
b Phạm vi và khai báo biến
Nếu bạn không khai báo biến trong thủ tục (routine) VBA, VBA sẽ sử dụng kiểu mặc định là variant Dữ liệu lưu trong biến kiểu variant, nó giống như chameleon (con tắc kè!) Nó sẽ thay đổi kiểu tuỳ thuộc bạn làm việc với đối tượng nào Một số bạn cho rằng, “cũng được thôi, khỏi cần phải quan tâm đến việc khai báo biến” Vâng, như trên tôi đã đề cập bạn sẽ phải xem xét lại nhận xét của mình nếu bạn muốn mình làm việc theo kiểu “chuyên nghiệp” Với nhiều biến trong chương trình, nó sẽ làm cho bộ nhớ bị sử dụng tối đa và làm ảnh hưởng đến toàn
bộ các hoạt động liên quan của máy tính bạn
Nhằm bắt buộc các chương trình của bạn phải khai báo biến, bạn đưa phát biểu sau vào đầu VBA module của bạn (tôi khuyên bạn nên làm điều này) Bạn có
thể bật chức năng Require Variable Definition bằng cách vào VBE chọn Tools/Options trong Tab Editor.
mà thôi Hay trong Module, hay trong tất cả các modules?
Chỉ dùng trong thủ tục Các bạn dùng phát biểu Dim, Static cho mục
đích này
Chỉ dùng trong Module Các bạn dùng phát biểu Dim vào trước thủ tục
hay hàm đầu tiên trong module
Dùng cho tất cả các thủ tục
trong tất cả các modules hàm đầu tiên trong module.Các bạn dùng phát biểu Public trước thủ tục hay
Trang 31Ví dụ:
Sub ThuKhaiBao()
Dim ix As Integer
Dim lHang As Long
Dim dteData As Date
2 Làm việc với các hằng số (Constant)
Giá trị của biến có thể thay đổi khi bạn thực hiện đọan code của mình Trong một số trường hợp bạn cần dùng đến các giá trị không bao giờ thay đổi Ví dụ như
bạn cần dùng đến hằng số pi = 3.14 chẳng hạn Đó là hằng số.
Bạn khai báo hằng số như sau:
Const NumQuarter As Integer = 4
Const Rate =.725, Period = 12
Const ModName As String = “Budget Macro”
Public Const AppName As String = “Budget Application”
Tương tự như biến hằng số cũng có phạm vi sử dụng của nó Bạn có thể áp dụng quy tắc giống như phạm vi sử dụng của biến
Như phần trên đã trình bày, bạn không thể nào thay đổi giá trị của hằng Nếu bạn cố thay đổi bạn sẽ nhận được thông báo lỗi
Trang 32Trong Excel có rất nhiều hằng số đã được định nghĩa trước Ví dụ như khi bạn thiết lập chế độ tính toán Manual thì bạn có hằng số xlCalculationManual.
4.94065645841247E-324 đến 1.79769313486232E308
-922,337,203,685,477.5808 đến
922,337,203,685,477.5807
per char) từ 1 đến 65,400)Tuỳ theo (varies, khoảng
Trang 33Object 4 Cho bất cứ đối tượng
được định nghĩa nào (any define object)
Variant Tuỳ theo (varies;
16 bytes with number;
22 bytes + string length with characters)
Cho bất kỳ kiểu dữ liệu nào (any data type)
Kiểu dữ liệu
người dùng định nghĩa
(User defined)
Tuỳ theo (varies) Tuỳ theo (varies)
Thông thường nên chọn kiểu dữ liệu nhỏ nhất (byte) Các bạn hãy thử tính xem nếu tôi sử dụng biến đại diện cho số cột trong Excel thì tôi nên dùng biến kiểu gì? Tương tự đối với biến đại diện cho số hàng trong Excel
a Làm việc với chuổi
Bạn có thể làm việc với hai kiểu của chuổi trong VBA
Fixed-length strings: được khai báo với số ký tự Số ký tự lớn
nhất là 65,526 Bạn khai báo đối với kiểu này như sau: Dim sChuoi As String*20
Variable-length strings: về mặt lý thuyết biến này có thể chứa
khoảng hai triệu ký tự (can hold as many as two billion characters) Bạn khai báo kiểu này như sau: Dim sChuoi As String
Mỗi ký tự chiếm khoảng một byte, biến chuổi không xác định chiều dài chuổi chiếm khoảng 16 bytes Vì vậy nếu được bạn nên dùng biến chuổi có chiều dài cố định
b.Làm việc với kiểu ngày
Một kiểu dữ liệu khác mà bạn cũng thường sử dụng là kiểu ngày Bạn có thể
sử dụng biến chuổi để lưu trữ ngày nhưng bạn sẽ không thể thực hiện các tính toán
về ngày Ví dụ như tính toán số ngày giữa hai ngày chẳng hạn Kiểu ngày sẽ chiếm dụng 8 bytes và có thể có giá trị từ ngày 1/1/100 đến ngày 31/12/9999 ! Chắc có lẻ
đủ dùng!
Sau đây là một số ví dụ về khai báo biến, hằng kiểu ngày
Dim Today As Date
Dim StartTime As Date
Const FirstDay As Date = #1/1/2005#
Const Noon = #12:00:00#
Trong VBA bạn đặt ngày và thời gian trong dấu # như trong ví dụ trên.
Chú ý rằng biến ngày sẽ được thể hiện theo việc thiết lập của hệ thống máy
tính bạn Bạn có thể thay đổi bằng cách vào Control Panel/Region and Language
để thay đổi cách thiết lập
Thiết lập giá trị cho một biến
Trang 34Chắc chắn rằng các bạn đã quá quen với việc này Sau đây tôi chỉ xin giới thiệu một số ví dụ:
Các toán tử được sử dụng trong VBA
Ngoài các phép toán thông thường trên còn có các phép toán logic như Not, And, Or, XoR, Eqv, Imp Bạn có thể tìm hiểu trong phần help của Excel.
4 Làm việc với Mảng (Arrays)
Hầu hết các ngôn ngữ lập trình đều hổ trợ mảng Mảng là một nhóm các biến
có chung tên Bạn tham chiếu đến chúng bằng tên mảng và số thứ tự (index number) Ví dụ bạn có thể khai báo một mảng gồm 12 phần tử để lưu trữ tên tháng trong một năm
Dim TenThang(1 to 12) As String
Và khi tham chiếu đến chúng bạn có thể tham chiếu như sau
TenThang(1) ‘Là tháng giêng
TenThang(2) ‘Là tháng hai
a.Khai báo mảng
Trước khi sử dụng một mảng, bạn phải khai báo chúng Bạn khai báo mảng
với Dim hay Public giống như bạn khai báo với biến thông thường vậy Tuy nhiên
bạn phải xác định số phần tử của mảng Ví dụ bạn khai báo mảng có 100 phần tử
kiểu Integer
Dim MyArray(1 to 100) As Integer
Bạn có thể khai báo chỉ số phần tử lớn nhất (ví dụ trong ví dụ trên là 100) Chú
ý rằng mặc định số phần tử sẽ bắt đầu bằng 0 Vì vậy nếu bạn khai báo
Dim MyArray(100) As Integer
Có nghĩa là bạn khai báo mảng với 101 phần tử
Trang 35Nếu muốn tất cả các mảng bắt đầu bằng phần tử thứ nhất (1) bạn phải khai báoOption Base 1
Vào phần trên cùng của module
b.Mảng nhiều chiều
Trong ví dụ trên, mảng chỉ là một chiều Trong VBA mảng có thể lên đến 60 chiều
Ví dụ khai báo mảng 2 chiều như sau:
Dim MyArray (1 to 10, 1 to 10) As Integer
Ví dụ về gán giá trị cho các phần tử trong mảng
MyArray(3,4)=125 ‘Phần tử hàng thứ 3 cột thứ 4 bằng 125
c.Mảng động (Dynamic Arrrays)
Bạn cũng có thể tạo ra mảng động Khi khai báo mảng động bạn không khai báo số phần tử
Dim MyArray() As Integer
Trước khi bạn muốn sử dụng mảng này bạn phải khai báo số phần tử của chúng như khai báo dưới đây:
ReDim MyArray(NumElements)
Bạn chú ý rằng, khi bạn khai báo mảng như trên thì bạn sẽ xoá tất cả các giá trị lưu trong mảng này Đôi khi đây là điều bạn không muốn
Bạn hãy xem ví dụ sau:
Dim MyArray As Integer
Để tránh điều này xảy ra ta phải dùng khai báo
ReDim Preserve MyArray(11)
5 Sử dụng With - End With
With - End With dùng để thực hiện nhiều thao tác đối với đối tượng đơn lẻ Phương pháp này được sử dụng đối với đối tượng nào có nhiều thuộc tính Để hiểu được cách sử dụng With - End With trong công việc, ví dụ dưới đây thể hiện quy trình thực hiện Chương trình con này sẽ làm thay đổi 5 thuộc tính của vùng định dạng
Sub ChangeFont1()
Trang 36Selection.Font.Name = “Times New Roman”
Selection.Font.FontStyle = “Bold Italic”
Selection.Font.Size = 12
Selection.Font.Underline = xlUnderlineStyleSingle
Selection.Font.ColorIndex = 5
End Sub
Trong thủ tục trên, bạn thấy đoạn Selection.Font được lặp lại nhiều lần và bạn
có thể viết lại khi sử dụng With - End With Dưới đây là thủ tục đã sửa lại:
Sub ChangeFont2()
With Selection.Font
.Name = “Times New Roman”
.FontStyle = “Bold Italic”
Trang 37Bài 6 SỬ DỤNG GIÚP ĐỠ HELP
Trong quá trình viết macro, chắc chắn bạn phải cần đến trợ giúp Không có sách nào có thể viết được hết về VBA nói riêng và các ngôn ngữ lập trình nói chung, vì những kiến thức trong đó rất rộng lớn Vì vậy bạn nên sử dụng tính năng Help của VBA Điều cơ bản nhất để sử dụng Help là bạn phải biết tiếng Anh để đọc và hiểu được các hướng dẫn đó Những người có trình độ về lập trình cao như tôi biết đều chủ yếu sử dụng sách tiếng Anh và đọc trong Help Nội dung trình bày dưới đây sẽ cho các bạn hiểu được mức độ tiện dụng của Help như thế nào
1 Tại thời điểm đang viết code
Trong quá trình viết macro tại cửa sổ Microsoft Visual Basic, bạn có thể truy cập vào help tại những mục chọn chi tiết (ví dụ như Select) như sau:
- Chọn mục cụ thể (di chuyển chuột vào chữ Select)
- Sau đó ấn phím F1 Khi đó hiện cửa sổ Microsoft Visual Basic Help như hình 19
2 Sử dụng hộp thoại giúp đỡ với chủ đề cụ thể
Để sử dụng hộp thoại giúp đỡ với chủ đề (topic) cụ thể, bạn thực hiện các bước sau:
- Vào cửa sổ Microsoft Visual Basic đang mở (nếu chưa mở thì bạn vào menu
Tools/Maros/Visual Basic Editer hoặc phím tắt Alt + F11).
- Từ menu Help, bạn chọn Microsoft Visual Basic Help
- Bạn có thể thực hiện bằng cách sử dụng chức năng Search (ví dụ gõ nội dung
“commandbar”, rồi Enter) hoặc có thể chọn chủ đề mà bạn đang cần tìm trong danh mục
Trang 38Hình 19: Cửa sổ Microsoft Visual Basic Help
Hình 20: Sử dụng Visual Basic Help
3 Trình duyệt đối tượng
Phương thức trình duyệt đối tượng (Object Browser) được sử dụng để xem các đối tượng, các phương pháp và những thuộc tính trong việc bổ sung thêm các hàm
số (functions) và các lệnh (statements) được xây dựng trong Visual Basic for