Tải bản đầy đủ

Giáo trình VBA autocad

Đ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 =
 Ví dụ
Public Const Pi = 3.141592654
 Khai báo biến
[Dim/Public/Private] As
 Khai báo mảng tĩnh
[Dim/Public/Private] (thông số về chiều) As
 Khai báo mảng động
[Dim/Public/Private] () As

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] 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] 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] 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] 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 (Thông số mảng) As
 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 () As
Để 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 (Thông số mảng) As
 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 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


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay

×