1. Trang chủ
  2. » Thể loại khác

LAP TRINH VBA ppsx

77 228 5
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 77
Dung lượng 5,1 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

BÀ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 2

Workbook (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 3

3 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 4

Microsoft 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 5

Hì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 6

3 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 7

4 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 8

Hình 7: Gán hình vào nút lệnh mới

nh 8: Tạo các nút lệnh trong thanh Macro1 và gán Assign Macro vào

Trang 9

Ghi 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 10

Ký 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 11

Hì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 12

BÀ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 13

Hì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 14

Ghi 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 15

Bà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 16

Bạ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 18

Number1 = 3

Number2 = 9

Mynumber = Number*Number2

Trang 19

BÀ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 20

Chú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 21

Chú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 22

Mụ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 24

thay đổ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 25

Có 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 26

ComboBox1.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 27

Khai 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 28

GV: 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 29

BÀ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 30

Biế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 31

Ví 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 32

Trong 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 33

Object 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 34

Chắ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 35

Nế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 36

Selection.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 37

Bà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 38

Hì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

Ngày đăng: 27/07/2014, 00:20

Xem thêm

HÌNH ẢNH LIÊN QUAN

Hình 4: Chạy macro ở Sheet2 - LAP TRINH VBA ppsx
Hình 4 Chạy macro ở Sheet2 (Trang 5)
Hình 5: Gán macro vào hình oval - LAP TRINH VBA ppsx
Hình 5 Gán macro vào hình oval (Trang 6)
Hình 6: Tạo thanh công cụ mới - LAP TRINH VBA ppsx
Hình 6 Tạo thanh công cụ mới (Trang 7)
Hình 7: Gán hình vào nút lệnh mới - LAP TRINH VBA ppsx
Hình 7 Gán hình vào nút lệnh mới (Trang 8)
Hình 10: Tạo menu Maro2 trong menu của Excel - LAP TRINH VBA ppsx
Hình 10 Tạo menu Maro2 trong menu của Excel (Trang 9)
Hình 11: Tạo các menu con - LAP TRINH VBA ppsx
Hình 11 Tạo các menu con (Trang 10)
Hình 12: Đổi tên menu con và gán Assign Macro cho nó. - LAP TRINH VBA ppsx
Hình 12 Đổi tên menu con và gán Assign Macro cho nó (Trang 11)
Hình 13: Cửa sổ Microsoft Visual Basic. - LAP TRINH VBA ppsx
Hình 13 Cửa sổ Microsoft Visual Basic (Trang 13)
Hình vẽ 27: Cửa sổ Editor và Editor Format trong Options - LAP TRINH VBA ppsx
Hình v ẽ 27: Cửa sổ Editor và Editor Format trong Options (Trang 44)
Hình 31: Sử dụng VBAProject Properties - LAP TRINH VBA ppsx
Hình 31 Sử dụng VBAProject Properties (Trang 46)
Hình   32:   Dự   án   Su_dung_VBA   trong   <All   Librairies>   và   bảo   vệ   code   trong  Protection - LAP TRINH VBA ppsx
nh 32: Dự án Su_dung_VBA trong <All Librairies> và bảo vệ code trong Protection (Trang 47)
Hình 34: Vào menu Security và cửa sổ Security - LAP TRINH VBA ppsx
Hình 34 Vào menu Security và cửa sổ Security (Trang 49)
Hình 38: Sửa lỗi gặp phải khi viết code - LAP TRINH VBA ppsx
Hình 38 Sửa lỗi gặp phải khi viết code (Trang 53)
Hình 39: Báo lỗi code - LAP TRINH VBA ppsx
Hình 39 Báo lỗi code (Trang 54)
Hình 41: Sử dụng Offset để tham chiếu đến các ô - LAP TRINH VBA ppsx
Hình 41 Sử dụng Offset để tham chiếu đến các ô (Trang 60)

TỪ KHÓA LIÊN QUAN

w