Đinh Văn Tráng
PHỤ LỤC
Chương 1 .........................................................................................................................................8
TỔNG QUAN VỀ VBA TRONG AUTOCAD .............................................................................8
1.1.
Khái niệm dự án nhúng và dự án độc lập..................................................................... 8
1.2.
Trình quản lý dự án VBA .............................................................................................. 8
1.3.
Định nghĩa lệnh mới bằng Autolisp............................................................................... 9
Chương 2 .......................................................................................................................................11
HỆ THỒNG ĐỐI TƯỢNG VÀ MỘT SỐ THAO TÁC CƠ BẢN TRONG AUTOCAD .......11
2.1.
Mô hình đối tượng trong AutoCad.............................................................................. 11
2.2.
Một số đối tượng chính trong AutoCad ...................................................................... 12
2.1.1.
Đối tượng Application ........................................................................................... 12
2.1.2.
Khái niệm tập đối tượng ....................................................................................... 12
2.1.3.
Tập đối tượng Documents và đối tượng Document............................................ 12
2.2.
Các thao tác cơ bản trong AutoCad ............................................................................ 13
2.2.1.
Mở bản vẽ - Phương thức Open ........................................................................... 13
2.2.2.
Tạo bản vẽ mới – Phương thức Add .................................................................... 13
2.2.3.
Lưu bản vẽ -Phương thức Save, SaveAs .............................................................. 14
2.2.4.
Đóng bản vẽ - Phương thức Close ........................................................................ 15
2.2.5.
Thoát khỏi chương trình AutoCad – Phương thức Quit ................................... 16
Chương 3 .......................................................................................................................................17
CÁC KIỂU DỮ LIỆU VÀ CÁCH KHAI BÁO BIẾN TRONG VBA.....................................17
3.1.
Những quy đinh về cú pháp trong VBA ..................................................................... 17
3.2.
Khai báo biến trong VBA ............................................................................................. 18
3.2.1.
Tổng Quát............................................................................................................... 18
3.2.2.
Cách thức khai báo biến ....................................................................................... 18
Basic VBA for AutoCad
Page 1
Đinh Văn Tráng
3.3.
Các kiểu dữ liệu cơ bản trong VBA ............................................................................ 19
3.3.1.
Kiểu Logic – Boolean............................................................................................. 19
3.3.2.
Kiểu số nguyên – Byte/Integer/Long.................................................................... 20
3.3.3.
Kiểu số thực – Single/Double ................................................................................ 20
3.3.4.
Kiểu Chuỗi – String ............................................................................................... 21
3.3.5.
Kiểu Mảng .............................................................................................................. 21
3.3.6.
Kiểu Variant. .......................................................................................................... 23
Chương 4 .......................................................................................................................................24
TOÁN TỬ VÀ CÁC HÀM THÔNG DỤNG ..............................................................................24
4.1.
Các hàm số học trong VBA .......................................................................................... 25
4.2.
Các toán tử so sánh thường sử dụng trong VBA ....................................................... 26
4.3.
Toán tử Logic thường dùng trong VBA ..................................................................... 27
4.3.1.
Toán tử AND .......................................................................................................... 27
4.3.2.
Toán tử OR............................................................................................................. 28
4.3.3.
Toán tử NOT .......................................................................................................... 29
4.4.
Các hàm chuyển đồi dữ liệu ......................................................................................... 29
4.5.
Các hàm xử lý chuỗi ..................................................................................................... 30
4.5.1.
Hàm LEFT ............................................................................................................. 30
4.5.2.
Hàm RIGHT .......................................................................................................... 30
4.5.3.
Hàm MID ............................................................................................................... 30
4.5.4.
Hàm LEN ............................................................................................................... 31
4.5.5.
Hàm UCase............................................................................................................. 31
4.5.6.
Hàm LCase ............................................................................................................. 32
4.5.7.
Hàm InStr............................................................................................................... 32
4.5.8.
Hàm InStrRev ........................................................................................................ 34
Basic VBA for AutoCad
Page 2
Đinh Văn Tráng
4.5.9.
Hàm Ltrim, RTrim ................................................................................................ 35
4.5.10.
Hàm Space .......................................................................................................... 36
4.5.11.
Hàm Split ............................................................................................................ 36
4.5.12.
Hàm Replace ...................................................................................................... 38
4.5.13.
Hàm StrComp .................................................................................................... 39
Chương 5 .......................................................................................................................................41
CẤU TRÚC ĐIỀU KIỆN VÀ VÒNG LẶP ................................................................................41
5.1.
Cấu Trúc Điều Kiện ...................................................................................................... 41
5.1.1.
Cấu trúc : “If … Then …” .................................................................................... 41
5.1.2.
Cấu trúc : “If … Then… Else … End If” ............................................................ 42
5.1.3.
Cấu trúc : “If … Then… Else … End If” mở rộng ............................................ 43
5.1.4.
Cấu trúc: “Select Case … Case…End Select” .................................................... 44
5.2.
Cấu Trúc Vòng Lặp ...................................................................................................... 45
5.2.1.
Cấu trúc: “For … Next” ....................................................................................... 45
5.2.2.
Cấu trúc : “For Each … Next” ............................................................................. 47
5.2.3.
Cấu trúc : “Do While … Loop”............................................................................ 48
5.2.4.
Cấu trúc : “Do … Loop While”............................................................................ 48
5.2.5.
Cấu trúc : “Do Until … Loop” ............................................................................. 49
5.2.6.
Cấu trúc : “Do … Loop Until ” ............................................................................ 49
Chương 6 .......................................................................................................................................50
CÁC HÀM NHẬP LIỆU..............................................................................................................50
6.1.
Phương thức : Prompt .................................................................................................. 51
6.2.
Phương thức: GetString ............................................................................................... 52
6.3.
Phương thức : GetPoint................................................................................................ 53
6.4.
Phương thức : GetInteger và GetReal ........................................................................ 54
Basic VBA for AutoCad
Page 3
Đinh Văn Tráng
6.5.
Phương thức : GetDistance .......................................................................................... 55
6.6.
Phương thức : GetKeyWord ........................................................................................ 56
6.7.
Phương thức GetEntity ................................................................................................ 57
6.8.
Phương thức: GetCorner ............................................................................................. 58
6.9.
Phương thức : InitializeUserInput .............................................................................. 59
Chương 7 .......................................................................................................................................61
TẠO MỚI ĐỐI TƯỢNG TRONG AUTOCAD.........................................................................61
7.1.
Xác định nơi chứa đối tượng........................................................................................ 62
7.2.
Khai báo và phương thức tạo đối tượng hình học ..................................................... 63
7.2.1.
Tạo đường thẳng –Phương thức AddLine .......................................................... 63
7.2.2.
Tạo đối tượng LWPolyline - Phương thức AddLightWeightPolyline .............. 64
7.2.3.
Tạo đối tượng đường tròn – Phương thức AddCircle........................................ 65
7.2.4.
Tạo đối tượng cung tròn –Phương thức AddArc ............................................... 66
7.2.5.
Tạo đối tượng văn bản đơn - phương thức AddText ......................................... 67
7.2.6.
Tạo đối tượng văn bản nhiều dòng-Phương thức AddMtext ............................ 68
Chương 8 .......................................................................................................................................69
LÀM VIỆC VỚI ĐỐI TƯỢNG SELECTIONSET ...................................................................69
8.1.
Quy trình làm việc với đối tượng SelectionSet ........................................................... 70
8.2.
Khai báo và khởi tạo đối tượng SelectionSet.............................................................. 70
8.3.
Thêm đối tượng vào trong một SelectionSet .............................................................. 71
8.3.1.
Phương thức AddItems ......................................................................................... 72
8.3.2.
Phương thức Select ................................................................................................ 73
8.3.3.
Phương Thức SelectOnScreen .............................................................................. 75
8.3.4.
Thao tác với các đối tượng trong SelectionSet .................................................... 76
8.4.
Bộ lọc cho đối tượng SelectionSet ................................................................................ 76
Basic VBA for AutoCad
Page 4
Đinh Văn Tráng
8.4.1.
Lọc theo một điều kiện ........................................................................................... 77
8.4.2.
Lọc theo nhiều điều kiện ........................................................................................ 78
8.5.
Một số phương thức khác của đối tượng SelectionSet .............................................. 80
8.5.1.
Phương thức RemoveItems .................................................................................... 80
8.5.2.
Phương thức Clear ................................................................................................. 82
8.5.3.
Phương thức Eraser ............................................................................................... 82
8.5.4.
Phương thức Delete ................................................................................................ 82
Chương 9 .......................................................................................................................................84
HIỆU CHỈNH CÁC ĐỐI TƯỢNG HÌNH HỌC .......................................................................84
9.1.
Tổng quan về việc hiệu chỉnh các đối tượng hình học bằng VBA ............................ 85
9.2.
Sao chép đối tượng – Phương thức Copy ................................................................... 85
9.3.
Xóa đối tượng –Phương thức Delete ........................................................................... 86
9.4.
Di chuyển đối tượng – Phương thức Move ................................................................. 86
9.5.
Lấy đối xứng – Phương thức Mirror .......................................................................... 88
9.6.
Phương thức OffSet ...................................................................................................... 89
9.7.
Xoay đối tượng – Phương thức Rotate........................................................................ 90
9.8.
Thay đổi tỉ lệ đối tượng – Phương thức ScaleEntity.................................................. 92
9.9.
Thay đổi màu đối tượng – Thuộc tính Color.............................................................. 93
9.10.
Thay đổi Layer cho đối tượng – Thuộc tính Layer ................................................ 95
9.11.
Thay đổi kiểu đường cho đối tượng – Thuộc tính LineType ................................ 96
9.12.
Thay đổi bề rộng nét vẽ của đối tượng – Thuộc tính LineWeight ........................ 98
Chương 10 ...................................................................................................................................100
LÀM VIỆC VỚI ĐỐI TƯỢNG LAYER ..................................................................................100
10.1.
Duyệt qua tập đối tượng Layers ............................................................................ 101
10.2.
Khai báo và khởi tạo một Layer mới – Phương thức Add .................................. 101
Basic VBA for AutoCad
Page 5
Đinh Văn Tráng
10.3.
Đổi tên của Layer – Thuộc tính Name................................................................... 102
10.4.
Thiết lập một Layer hiện hành............................................................................... 103
10.5.
Gán màu cho một Layer – Thuộc tính Color........................................................ 103
10.6.
Gán kiểu đường cho một Layer – Thuộc tính LineType ..................................... 105
10.7.
Gán LineWeight cho một Layer – Thuộc tính LineWeight ................................ 107
10.8.
Một số thuộc tính khác của đối tượng Layer ........................................................ 109
10.8.1.
Bật, Tắt Layer – Thuộc tính LayOn .............................................................. 109
10.8.2.
Đông cứng, Làm tan Layer – Thuộc tính Freeze, UnFreeze ........................ 110
10.8.3.
Khóa, Mở Khóa Layer – Thuộc tính Lock, UnLock .................................... 110
10.8.4.
Xóa Layer – Thuộc tính Delete ....................................................................... 111
Chương 11 ...................................................................................................................................112
LÀM VIỆC VỚI ĐỐI TƯỢNG BLOCK .................................................................................112
11.1.
Duyệt qua tập đối tượng Block .............................................................................. 113
11.2.
Khai báo và khởi tạo một Block............................................................................. 113
11.3.
Đổi tên Block – Thuộc tính NAME ........................................................................ 114
11.4.
Xóa một Block – Thuộc tinh Delete ....................................................................... 115
11.5.
Chèn Block vào trong bản vẽ - Phương thức InsertBlock ................................... 117
11.6.
Phá vỡ một Block – Phương thức Explode ........................................................... 120
11.7.
Block chứa thuộc tính – Attributes ........................................................................ 122
11.7.1.
Tạo thuộc tính cho Block –Phương thức AddAttribute ............................... 122
11.7.2.
Thao tác với thuộc tính – Phương thức GetAttributes ................................. 125
Làm việc với bản vẽ tham khảo ngoài – External References ............................ 127
11.8.
11.8.1.
Gắn một tham chiếu ngoài vào bản vẽ – Phương thức
AddExternalReference....................................................................................................... 127
11.8.2.
Gỡ bỏ tham chiếu ngoài ra khỏi bản vẽ - Phương thức Detach .................. 130
Basic VBA for AutoCad
Page 6
Đinh Văn Tráng
11.8.3.
Tải lại tham chiếu ngoài – Phương thức Reload ........................................... 130
11.8.4.
Loại bỏ tham chiếu ngoài ra khỏi bản vẽ - Phương thức Unload................ 131
11.8.5.
Ràng buộc tham chiếu ngoài – Phương thức Bind ....................................... 132
TÀI LIỆU THAM KHẢO..........................................................................................................133
Basic VBA for AutoCad
Page 7
Đinh Văn Tráng
Chương 1
TỔNG QUAN VỀ VBA TRONG AUTOCAD
1.1. Khái niệm dự án nhúng và dự án độc lập
1.1.1. Dự án nhúng
Dự án nhúng là dự án đính kèm với bản vẽ.
Đặc điểm dự án nhúng là :
Không cần phải nhớ nơi lưu trử dự án, không phải tải dự án vào Autocad mỗi khi sử dụng
một chức năng nào đó có sẵn trong dự án, bởi vì nó được tự động tải vào mỗi khi bản vẽ
được mở.
Những chức năng được lập trình trong dự án VBA nhúng chỉ có hiệu lực đối với bản vẽ
chứa nó do đó muốn sử dụng những chứa năng này cho những bản vẽ khác người dùng
buộc phải sao chép dự án VBA đó.
1.1.2. Dự án độc lập
Dự án độc lập là dự án tách biệt trong một tệp tin có phần mở rộng là *.dvb và không phụ
thuộc vào bản vẽ nào cả.
Đặc điểm của dự án độc lập :
Muốn sử dụng dự án độc lập người dùng phải tải dự án đó vào trong Autocad.
Dự án độc lập có thể tác động lên tất cả các bản vẽ đang mở .
Khi cần chia sẽ những chức năng trong dự án chỉ cần mang theo tệp “.dvb” là đủ.
1.2. Trình quản lý dự án VBA
Trong Autocad việc quản lý dự án VBA được thực hiện dễ dàng = thông qua trình quản lý dự
án – VBA Manager.Để hiển thị VBA Manager chọn Tool ---> Macros ---> VBA Manager
(Hoặc đánh lệnh VBAMAN)
Basic VBA for AutoCad
Page 8
Đinh Văn Tráng
Ý nghĩa một số thành phần trong trình quản lý dự án
New
: Tạo mới dự án VBA (Mặc định là dự án độc lập)
Save As : Lưu dự án VBA.
Load
: Tải dự án VBA vào trong VBAIDE.Người dùng được yêu cầu chọn tệp dự án
VBA (*.dvb) để Load vào.
Macros : Hiển thị trình quản lý Macros.
Visual Basic Editor : Hiển thị môi trường VBAIDE, đây là môi trường thực hiện viết mã
lệnh và thiết kế giao diện chương trình.
1.3. Định nghĩa lệnh mới bằng Autolisp
Việc định nghĩa lệnh mới bằng Autolisp sẽ làm cho quá trình thực thi Macro đơn giản đi rất
nhiều..Autolisp chính là chiếc cầu nối tạo sự liên kết giữa dòng lệnh của AutoCad với các
Macro trong dự án VBA.
Để các lệnh mới có hiệu lực ngay khi AutoCad khởi động thì người lập trình cần lưu dự án
VBA thành tệp có tên là ACAD.DVB và tệp Autolisp có tên là ACAD.LSP và cả hai tệp này
phải được lưu vào thư mục Support của AutoCad.Hai tệp này sẽ tự động được tải lên ngay
sau khi AutoCad khởi động và người dùng có thể sử dụng các lệnh tự định nghĩa.
Basic VBA for AutoCad
Page 9
Đinh Văn Tráng
Cách tạo file Autolisp
Tại một thư mục bất kỳ, nhấn chuột phải, chọn New -> Text Document.
Đổi tên file vừa tạo thành tên file ta muốn với phần mở rộng LSP (thay vì txt)
Trong trường hợp Window của bạn đang bỏ chế độ hiển thị đuôi mở rộng, hãy Open
file Text vừa tạo, Save As file thành dạng “Tên_file.LSP” .Chú ý2 dấu “” để đảm
bảo file sẽ chuyển thành đuôi mở rộng LSP.
Cách thức định nghĩa lệnh mới bằng AutoLisp
Basic VBA for AutoCad
Page 10
Đinh Văn Tráng
Chương 2
HỆ THỒNG ĐỐI TƯỢNG VÀ MỘT SỐ THAO TÁC CƠ BẢN TRONG AUTOCAD
2.1. Mô hình đối tượng trong AutoCad
Trong AutoCad có rất nhiều đối tượng khác nhau như:
- Các đối tượng hình học như Line, Circle, Mtext, Text…
- Các đối tượng phi hình học như: Layer, Linetype, Dimension …
- Và ngay cả bản vẽ, bản thân chương trình AutoCad cũng là một đối tượng (Đối tượng
Application)
Mỗi đối tượng trong Autocad đều có những thuộc tính và các phương thức đặc trưng của nó.
Basic VBA for AutoCad
Page 11
Đinh Văn Tráng
2.2. Một số đối tượng chính trong AutoCad
2.1.1. Đối tượng Application
Đối tượng Application là đối tượng gốc trong mô hình đối tượng của AutoCad.Từ đối tượng
này ta có thể truy xuất đến bất kỳ đối tượng nào.Đối tượng Application là một đối tượng
toàn cục nghiã là mọi phương thức và thuộc tính của nó đều có hiệu lực trong môi trương
VBAIDE.
Một số phương thức thường dùng của đối tượng Application:
Phương thức Update – Phương thức này cập nhật lại các thay đổi.
Phương thức Zoom như ZoomAll, ZoomExtents…
Phương thức Quit – Thoát khỏi chương trình AutoCad.
2.1.2. Khái niệm tập đối tượng
Trong Autocad các đôi tượng được tổ chức hầu hết trong Tập đối tượng.Ví dụ các đối
tượng hình học được quản lý trong tập đối tượng ModelSpace, PaperSpace hoặc
Blocks.Các đối tượng phi hình học như Layer, DimStyle, TextStyle được quản lý trong các
tập đối tượng tương ứng như Layers, DimStyles, TextStyles…
2.1.3. Tập đối tượng Documents và đối tượng Document
Tập đối tượng Documents là một tập chứa tất cả các bản vẽ đang được mở.
Một số phương thức của tập đối tượng Documents :
Phương thức Add : Sử dụng để tạo một bản vẽ mới.
Phương thức Open : Sử dụng để mở một bản vẽ có sẵn.
Phương thức Close : Sử dụng để đóng tất cả các bản vẽ đang được mở
Đối tượng Document, thực chất là một bản vẽ AutoCAD đang được mở thuộc tập đối
tượng Documents.Đối tượng này chứa tất cả các đối tượng hình học và phi hình học trong
một
bản vẽ AutoCAD cũng như chứa hầu hết các đối tượng khác của bản vẽ như
Viewports.
Trong VBA, đối tượng Thisdrawing tham chiếu đến bản vẽ hiện hành, những tác động lên
đối tượng này cũng chính là tác động lên bản vẽ hiện hành.
Basic VBA for AutoCad
Page 12
Đinh Văn Tráng
2.2. Các thao tác cơ bản trong AutoCad
2.2.1. Mở bản vẽ - Phương thức Open
Để mở một bản vẽ ta sử dụng phương thức OPEN có trong tập đối tượng Documents.Bản
vẽ vừa được mở sẽ trở thành bản vẽ hiện hành.
Cú pháp
Documents.Open (FileName)
Giải thích
Tham số
Giải thích
Kiểu String – Chuỗi thể hiện tên bản vẽ bao (gồm đường dẫn và
FileName
phần mở rộng)
Ví dụ
2.2.2. Tạo bản vẽ mới – Phương thức Add
Để tạo bản vẽ mới sử dụng phương thức ADD có trong tập đối tượng Documents.
Cú pháp
Set DocObj = Documents.Add ([TemplateName])
Basic VBA for AutoCad
Page 13
Đinh Văn Tráng
Giải thích
Giải thích
Tham số
Kiểu acadDocument – Biến chứa bản vẽ được tạo
DocObj
Tham số tùy chọ, kiểu String – Chuỗi chứa đường dẫn đầy đủ đến
bản vẽ mẫu (tệp *.dwt).Nếu không có tham số này, AutoCad sẽ tạo
TemplateName bản vẽ mới dựa trên tệp bản vẽ mẫu mặc định (Thường là tệp
Acad.dwt)
Ví dụ
2.2.3. Lưu bản vẽ -Phương thức Save, SaveAs
Để lưu bản bản vẽ ta dùng phương thức SAVE (lưu với tên hiện hành) hoặc phương thức
SAVEAS (lưu với tên khác) có trong đối tượng Thisdrawing.
Cú pháp
Thisdrawing.Save
Thisdrawing.SaveAs FileName [, FileType]
Giải thích
Giải thích
Tham số
Kiểu String – Chuỗi chứa tên cần lưu (bao gồm cả đường dẫn và phần mở
FileName rộng).Nếu không chỉ rõ bản vẽ sẽ được lưu vào thư mục hoạt động của
AutoCad (thông thường C:\Program Files\AutoCAD 20xx)
FileType
Tham số tùy chọn – Xác định kiểu bản vẽ sẽ được lưu.
acR14_DWG : Tệp AutoCAD Release14/LT97 DWG (*.dwg)
acR14_DXF : Tệp AutoCAD Release14/LT97 DXF (*.dxf)
acR15_DWG: Tệp AutoCAD 2000 DWG (*.dwg)
acR15_DXF: Tệp AutoCAD 2000 DXF (*.dxf)
acR15_Template : Tệp AutoCAD 2000 Drawing Template File
(*.dwt)
acNative : Tệp bản vẽ được lưu với kiểu tệp mới nhất ứng với phiên
bản AutoCAD hiện hành.
Basic VBA for AutoCad
Page 14
Đinh Văn Tráng
Ví dụ
2.2.4. Đóng bản vẽ - Phương thức Close
Để đóng bản vẽ sử dụng phương thức CLOSE có trong đối tượng Thisdrawing.
Cú pháp
Thisdrawing.Close ([SaveChange] [, FileName])
Giải thích
Tham số
Giải thích
Tham số tùy chọn
SaveChange
SaveChange =True : Lưu bản vẽ trước khi đóng
SaveChange =False : Không lưu bản vẽ trước khi đóng
Tham số tùy chọn, kiểu String –Chuỗi thể hiện tên bản vẽ (bao gồm
FileName
đường dẫn và phần mở rộng) trong trường hợp bản vẽ chưa lưu lần
nào
Ví dụ
Basic VBA for AutoCad
Page 15
Đinh Văn Tráng
2.2.5. Thoát khỏi chương trình AutoCad – Phương thức Quit
Để thoát khỏi AutoCad chúng ta sử dụng phương thức Quit có trong đối tượng
Application.Nếu có bản vẽ hoặc dự án nào chưa được lưu AutoCad sẽ nhắc người dùng lưu
sau đó mới thoát.
Cú pháp
Application.Quit
Basic VBA for AutoCad
Page 16
Đinh Văn Tráng
Chương 3
CÁC KIỂU DỮ LIỆU VÀ CÁCH KHAI BÁO BIẾN TRONG VBA
3.1. Những quy đinh về cú pháp trong VBA
- Những câu lệnh là những dòng riêng biệt.Nếu có nhiều câu lệnh trên cùng một dòng thì các
câu lệnh ngăn cách nhau bằng dấu hai chấm (:),nếu dòng lệnh quá dài thì muốn ngắt xuống
dòng thì ta dùng “khoảng trắng + _” .
- Nếu muốn chèn thêm dòng chú thích thì ta dùng dấu nháy đơn (‘)
- Quy tắc đặt tên biến
Ký tự đầu tiên bắt buộc phải là chữ cái.
Không chứa khoảng trắng, dấu chấm (.), dấu chấm than(!), hoặc các ký tự đặc biệt như
@, #, &, $
Tên biến không dài quá 255 ký tự
Tên biến không trùng với các từ khóa trong VBA (Xem danh sách một số từ khóa
thường sử dụng trong VBA)
Trong một SUB không được đặt tên biến trùng nhau
- Một số từ khóa thường sử dụng trong VBA
As
Empty
Input
Mid
Option
Public
String
Binary
Error
Is
New
Optional
Resume
Then
ByRef
False
Len
Next
ParamArray
Seek
Time
ByVal
For
Let
Nothing
Print
Set
To
Date
Friend
Lock
Null
Private
Static
True
Else
Get
Me
On
Property
Step
WithEvents
Basic VBA for AutoCad
Page 17
Đinh Văn Tráng
3.2. Khai báo biến trong VBA
3.2.1. Tổng Quát
Một biến khi sử dụng trong VBA có thể không cần khai báo, nhưng cách này chỉ nên áp
dụng khi viết các chương trình nhỏ.Khi làm việc với một dự án có nhiều Modul,
UserForm… cần khai báo biến một cách tường minh để chương trình dễ đọc, chạy nhanh
hơn và tận dụng được sự trợ giúp của môi trường VBAIDE.
Biến cục bộ : Là biến khai báo trong một chương trình con và phạm vi hoạt động của nó
được giới hạn trong chính chương trình con đó thôi.
Biến toàn cục : Phạm vi hoạt động của biến là toàn bộ dự án, bất kỳ nơi đâu trong dự án
(bất kể Modul, UserForm..) cũng có thể sử dụng được biến này.
Nếu một biến được khai báo với từ khóa DIM thì mặc định biến đó là biến cục bộ.Phạm
vi hoạt động của biến này được giới hạn trong SUB.
Nếu một biến được khai báo với từ khóa PRIVATE thì phạm vi hoạt động của biến là
trong nội bộ Modul đó thôi, tất cả các SUB thuộc Modul đó đều sử dụng được nhưng
không thể truy cập từ một Modul hay UserForm khác.
Nếu một biến được khai báo với từ khóa PUBLIC thì phạm vi hoạt động của biến là
trong toàn bộ dự án nghĩa là bất kỳ trong Modul, UserForm nào cũng có thể sử dụng
được biến này.
Chú ý : Không dùng từ khóa PRIVATE, PUBLIC cho việc khai báo biến nằm bên trong
một SUB.
3.2.2. Cách thức khai báo biến
Khai báo hằng số
Hằng số là một loại biến đặc biệt mà giá trị của nó được xác định ngay lúc khai báo và luôn
không thay đổi.Cách này thường được sử dụng cho những hằng số hay dùng trong chương
trình như π = 3.141596254.
Basic VBA for AutoCad
Page 18
Đinh Văn Tráng
Cú pháp
[Public/Private] Const <Tên_Hằng> = <Giá trị hằng số>
Ví dụ
Public Const Pi = 3.141592654
Khai báo biến
[Dim/Public/Private] <Tên_biến> As <Kiểu dữ liệu>
Khai báo mảng tĩnh
[Dim/Public/Private] <Tên mảng> (thông số về chiều) As <Kiểu dữ liệu>
Khai báo mảng động
[Dim/Public/Private] <Tên mảng> () As <Kiểu dữ liệu>
3.3. Các kiểu dữ liệu cơ bản trong VBA
3.3.1. Kiểu Logic – Boolean
Biến kiểu Boolean chỉ chứa hai giá trị TRUE và FALSE. Giá trị mặc định ban đầu của
biến kiểu Boolean là FALSE
Cú pháp
[Dim/Public/Private] <Tên_Biến> As Boolean
Ví dụ
Dim blnA as Boolean
Public blnB as Boolean
Private blnC as Boolean
Basic VBA for AutoCad
Page 19
Đinh Văn Tráng
3.3.2. Kiểu số nguyên – Byte/Integer/Long
Cú pháp
[Dim/Public/Private] <Tên_Biến> As [Byte/Integer/Long]
Byte, Integer, Long đều là các từ khóa khai báo kiểu số nguyên nhưngchúng chỉ khác nhau
về giới hạn giá trị mà biến có thể nhận được.
Kích thước
Phạm Vi
Byte
1 Byte
0 – 255
Integer
2 Bytes
-32,768 – 32767
Long
4 Bytes
-2,147,486,648 – 2,147,483,647
Kiểu số nguyên
Ví dụ
Dim lngA as Long
Dim intB as Integer
3.3.3. Kiểu số thực – Single/Double
[Dim/Public/Private] <Tên_Biến> As [Single/Double]
Ví dụ
Dim dblA as Double
Public Pi as Double
Chú ý :
Các biến kiểu SỐ NGUYÊN và SỐ THỰC nếu không gán giá trị ban đầu cho biến thì giá
trị mặc định ban đầu sẽ bằng 0
Basic VBA for AutoCad
Page 20
Đinh Văn Tráng
3.3.4. Kiểu Chuỗi – String
Chuỗi là một hàng các ký tự liên tục nhau, số lượng ký tự trong chuỗi rất lớn.Trong VBA
chuỗi được đặt trong dấu ngoặc kép “”.Giá trị mặc định ban đầu cho biến kiểu chuỗi là một
chuỗi rỗng.
Cú pháp
[Dim/Public/Private] <Tên_Biến> As String
Ví dụ
Dim strA as String
strA = “VBA for AutoCad”
3.3.5. Kiểu Mảng
Khi gặp trường hợp phải xử lý một loạt các biến tương tự như nhau, ví dụ các phần tử của
một ma trận, nếu ta phải đặt tên khác nhau cho tất cảcác biến này thì rất bất tiện, vì vậy ta
có thể dùng kiểu mảng để đặt tên chung cho cả nhóm các phần tử đó và khi nào cần sử
dụng từng phần tử ta sẽ gọi tên theo chỉ số của chúng trong mảng.
- Mảng Tĩnh
Đây là loại mảng có số phần tử không thay đổi trong suốt quá trình hoạt động của
mảng.Mảng này thường được sử dụng khi biết trước số lượng phần tử của mảng.
Cú pháp
Dim <Tên_Mảng>(Thông số mảng) As <Kiểu dữ liệu>
Ví dụ
Dim Myarray(10) as Double ‘Mảng có 11 phần tử (Từ 0 tới 10)
Dim MyArray(1 to 10) as Double
‘Mảng có 10 phần tử.
Dim MyArray(1 to 5,1 to 5) as Double ‘Mảng có 25 phần tử
Dim MyArray(1 to n,1 to m) as Variant
Basic VBA for AutoCad
‘Mảng có n hàng và m cột
Page 21
Đinh Văn Tráng
- Mảng Động
Đây là mảng có số lượng phần tử có thể thay đổi được trong lúc chương trình hoạt
động.Với mảng động người lập trình không cần biết số lượng phần tử của mảng nó sẽ được
thiết lại tùy theo yêu cầu cụ thể của bài toán
Cú pháp
Dim <Tên_Mảng>() As <Kiểu dữ liệu>
Để thay đổi số lượng phần tử của mảng chúng ta sử dụng từ khóa REDIM
Cú pháp
ReDim <Tên_Mảng> (Thông số mảng) As <Kiểu dữ liệu>
Ví dụ
Dim MyArray () as Long ‘Khai báo mảng MyArray là mảng động
ReDim MyArray(1 to 4) as Long ---->Xác định lại kích thước cho mảng
Với một mảng động mà các phần tử đã được gán giá trị khi thay đổi số lượng phần tử sẽ có
hai trường hợp xảy ra.
Toàn bộ giá trị của các phần tử (thuộc mảng trước khi thay đổi) sẽ bị xóa bỏ và các
phần tử của mảng mới sẽ nhận giá trị mặc định.
Toàn bộ giá trị của các phần tử (thuộc mảng trước khi thay đổi) sẽ được giữ lại nếu
thỏa mãn 2 điều kiện sau
o Sử dụng từ khóa ReDim Preserve
o Sự thay đổi kích thước của mảng chỉ được thực hiện ở biên trên của chiều cuối
cùng của mảng nghĩa là các phần tử cần giữa lại giá trị có chỉ số không đổi khi mảng
được thiết lập lại.
Basic VBA for AutoCad
Page 22
Đinh Văn Tráng
Ví dụ
Dim MyArray () as Long ‘Khai báo mảng MyArray là mảng động
ReDim MyArray(1 to 4) as Long ‘Xác định lại kích thước cho mảng
MyArray(1) = 10: MyArray(2) = 20
‘Gán giá trị cho các phần tử mảng
MyArray(3) = 30: MyArray(4) = 40
ReDim Preserve MyArray(1 to 5) as Long
MyArray(5) = 50
‘Thay đổi kích thước mảng
‘Gán giá trị cho phần tử mới.
3.3.6. Kiểu Variant.
Kiểu Variant là một kiểu đặc biệt có thể chứa tất cả các kiểu dữ liệu khác.
Cú pháp
Dim <Tên_Biến> As Variant
Ví dụ
Dim varA as Variant
Basic VBA for AutoCad
Page 23
Đinh Văn Tráng
Chương 4
TOÁN TỬ VÀ CÁC HÀM THÔNG DỤNG
Nội dung chương :
-
Các hàm số học trong VBA
-
Các toán tử so sánh thường dùng trong VBA
-
Các tóa tử Logic thường dùng trong VBA
-
Các hàm chuyển đổi thườngdùng trong VBA
-
Các hàm xử lý chuỗi thường dùng trong VBA
Basic VBA for AutoCad
Page 24
Đinh Văn Tráng
4.1. Các hàm số học trong VBA
Toán Tử
Ý Nghĩa
Ví dụ
Kết quả
+
Cộng
10+5
15
-
Trừ
10-5
5
*
Nhân
10*5
50
/
Chia
10/5
2
\
Chia Lấy phần nguyên
11\2
5
^
Hàm mũ
10^2
100
Mod
Chi lấy phần dư
11 Mod 5
1
Abs(x)
Lấy giá trị tuyệt đối
Abs(-12)
12
Fix(99.8)
99
Fix(-99.2)
-99
Fix(-99.8)
-99
Int(99.2)
99
Int(-99.2)
-100
Int(-99.8)
-100
Round(2.4554,2)
2.45
Sqr(4)
2
Atn(1)
π/4
Sin(π/6)
½
Cos(π/3)
½
Tan(π/4)
1
Fix(x)
Lấy phần nguyên trước dấu phẩy
Lấy phần nguyên đã được làm
Int(x)
tròn
Làm tròn số thực x đến m số sau
Round(x,m)
dấu phẩy
Sqr(x)
Hàm căn bậc 2 của x
(x>=0)
Hàm lượng giác ngược của
Atn(x)
Tan(x)
Sin(x)
Các hàm lượng giác
Cos(x)
của x tính bằng đơn vị Radian
Tan(x)
Basic VBA for AutoCad
Page 25