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, Line
Trang 1PHỤ 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
Trang 23.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
Trang 34.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
Trang 46.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
Trang 58.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
Trang 610.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
11.8 Làm việc với bản vẽ tham khảo ngoài – External References 127
Trang 711.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
Trang 8Chươ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
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 đó
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)
Trang 9Ý 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
Trang 10Cá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
Trang 11Chươ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ó
Trang 122.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ư
Trang 132.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
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])
Trang 14 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]
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
Trang 15FileName
Tham số tùy chọn, kiểu String –Chuỗi thể hiện tên bản vẽ (bao gồm đườ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ụ
Trang 162.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
Trang 17Chươ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
Trang 183.2 Khai báo biến trong VBA
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
Trang 19 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
Trang 203.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
Ví dụ
Dim lngA as Long
Dim intB as Integer
Trang 213.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”
Đâ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 ‘Mảng có n hàng và m cột
Trang 22- 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
Trang 23 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 ‘Thay đổi kích thước mảng
MyArray(5) = 50 ‘Gán giá trị cho phần tử mới
Trang 24Chươ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
Trang 25Fix(x) Lấy phần nguyên trước dấu phẩy
Fix(99.8) Fix(-99.2) Fix(-99.8)
99 -99 -99
Int(x)
Lấy phần nguyên đã được làm
tròn
Int(99.2) Int(-99.2) Int(-99.8)
99 -100 -100
Sin(π/6) Cos(π/3) Tan(π/4)
½
½
1
Trang 26Ví dụ : Dùng hàm Atn để tính giá trị của số Pi
Dim Pi as double
Pi = 4*Atn(1)
Ví dụ : Ví dụ này sẽ tạo một hàm dùng để chuyển đổi đơn vị Degree ra Radian
4.2 Các toán tử so sánh thường sử dụng trong VBA
Sử dụng toán tử so sánh trong biểu thức để so sánh hai hoặc nhiều số, chuỗi Text, các biến hoặc kết quả của các hàm
- Nếu câu lệnh Đúng -> Kết quả của công thức được trả về giá trị True
- Nếu câu lệnh Sai -> Kết quả của công thức được trả về giá trị False
Trang 274.3 Toán tử Logic thường dùng trong VBA
4.3.1 Toán tử AND
Sử dụng toán tử And để kiểm tra xem hai toán hạng kiểu Boolean có là True hoặc False hay
không
Bảng giá trị của toán tử AND
Mycheck = (A>B) And (B > C) -> Mycheck = True
Mycheck = (A>B) And (B < C) -> Mycheck = False
Mycheck = (A<B) And (B < C) -> Mycheck = False
Trang 284.3.2 Toán tử OR
Sử dụng toán tử OR để kiểm tra hai toán hạng kiểu Boolean xem một trong hai toán hạng là True hoặc là False
Bảng giá trị của toán tử OR
Dim Mycheck as Boolean
‘Gán giá trị ban đầu cho các biến
A = 10:B=8:C=6
Mycheck = (A>B) Or (B > C) -> Mycheck = True
Trang 294.3.3 Toán tử NOT
Toán tử NOT sẽ trả về giá trị phủ định của một toán hạng
Bảng giá trị của toán tử NOT
Mycheck = Not(A > B) -> Mycheck = False
Mycheck = Not(B < C) -> Mycheck = True
4.4 Các hàm chuyển đồi dữ liệu
Chuyển đổi dữ liệu là một nhu cầu cần thiết trong khi lập trình,điều này làm cho các biến có kiểu dữ liệu rõ ràng,tránh được việc phát sinh lỗi sau này
Một số hàm chuyển đổi thông dụng
CBool(Expression) Chuyển đổi dữ liệu sang kiểu Logic (Boolean)
Cbyte(Expression) Chuyển đổi dữ liệu sang kiểu Byte
CInt(Expression) Chuyển đổi dữ liệu sang kiểu Integer CLng(Expression) Chuyển đổi dữ liệu sang kiểu Long
CDblxpression) Chuyển đổi dữ liệu sang kiểu Double CSng(Expression) Chuyển đổi dữ liệu sang kiểu Single
CStr(Expression) Chuyển đổi dữ liệu sang kiểu String
Val(String) Chuyển đổi dữ liệu String sang kiểu Double
Trang 30Dim strA, strB as String
strA = “VBA for AutoCad”
strB = Left(strA, 7) ->strB = “VBA for”
Dim strA, strB as String
strA = “VBA for AutoCad”
strB = Right(strA, 7) ->strB = “AutoCad”
4.5.3 Hàm MID
Cú pháp
Trang 31 Công dụng
Hàm này trích Number ký tự bắt đầu từ ký tự Start của chuỗi String.Nếu không có giá trị Number thì sẽ trích một chuỗi bắt đầu từ ký tự Start đến ký tự cuối cùng
Ví dụ
Dim strA, strB as String
strA = “VBA for AutoCad”
Trang 32 Ví dụ
Dim strA, strB as String
strA = “VBA for AutoCad”
strB = UCase(strA) ->strB = “VBA FOR AUTOCAD”
Dim strA, strB as String
strA = “VBA for AutoCad”
strB = UCase(strA) ->strB = “vba for autocad”
Trang 33 Giải thích
Start
Kiểu Integer/Long – Tham số tùy chọn, là vị trí bắt đầu tìm
kiếm.Giá trị mặc định bằng 1.Nếu tham số Compare được sử dụng thì tham số Start bắt buộc phải được sử dụng
String_1 Kiểu String – “Chuỗi bị tìm kiếm”
String_2 Kiểu String – “Chuỗi tìm kiếm”
Compare Tham số tùy chọn - Hằng số so sánh
Hằng số so sánh (Chúng ta quan tâm 2 hằng số sau)
Dim strA, strB as String
Dim intC as Integer
strA = “VBA for AutoCad”
strB = “a”
intC = InStr(1 ,strA ,strB,vbTextCompare) ->intC = 3
intC = InStr(1 ,strA ,strB,vbBinaryCompare) ->intC = 14
intC = InStr(strA ,strB) ->intC = 14
Trang 34 Giải thích
String_1 Kiểu String – “Chuỗi bị tìm kiếm”
String_2 Kiểu String – “Chuỗi tìm kiếm”
Compare Tham số tùy chọn - Hằng số so sánh (Xem bảng hằng số so sánh)
Start Tham số tùy chọn ,Kiểu Integer/Long – Là vị trí bắt đầu tìm
kiếm.Giá trị mặc định của tham số là bắt đầu từ cuối chuỗi String_1
Hằng số so sánh (Chúng ta quan tâm 2 hằng số sau)
Trang 35 Ví dụ
Dim strA, strB as String
Dim intC as Integer
strA = “VBA for AutoCad”
strB = “a”
intC = InStr(1 ,strA ,strB,vbTextCompare) ->intC = 3
intC = InStr(1 ,strA ,strB,vbBinaryCompare) ->intC = 14
intC = InStr(strA ,strB) ->intC = 14
4.5.9 Hàm Ltrim, RTrim
Cú pháp
LTrim(String) RTrim(String) Trim(String)
Công dụng
Hàm LTrim xóa các khoảng trắng ở đầu một chuỗi, hàm RTrim xóa các khoảng trắng ở cuối chuỗi, hàm Trim xóa khoảng trắng ở cả đầu và cuỗi chuỗi
Ví dụ
Dim strA, strB as String
strA = “ VBA for AutoCad”
strB = LTrim(strA) ->strB = “VBA for AutoCad”
strA = “ VBA for AutoCad ”
strB = RTrim(strA) ->strB = “VBA for AutoCad”
strA = “ VBA for AutoCad ”
strB = Trim(strA) ->strB = “VBA for AutoCad”
Trang 36Dim strA, strB, strC as String
strA = “VBA for AutoCad”
strB = “Example Space function”
strC = strA & Space(3) & strB > strC “VBA for AutoCad Example Space function”
4.5.11 Hàm Split
Cú pháp
Split(String [, Delimiter] [, limit] [, Compare])
Công dụng
Hàm này tách một chuỗi dài thành một mảng gồm nhiều chuỗi nhỏ bằng ký tự khóa
Delimiter Nếu ký tự khóa Delimiter là một chuỗi rỗng thì mảng trả về là toàn bộ chuỗi String
Chú ý : Hàm này sẽ trả về một MẢNG gồm nhiều chuỗi nhỏ nên kiểu của biến trả về sẽ
là Mảng Động kiểu String hoặc Mảng Tĩnh kiểu String nếu tham số Limit được xác định hoặc kiểu Variant
Trang 37 Giải thích
String Kiểu String – Chuỗi sẽ được tách
Delimiter Tham số tùy chọn, kiểu String – Chuỗi chứa giá trị làm giới hạn
chia (Mặc định sử dụng khoảng trắng làm giới hạn chia)
Limit Tham số tùy chọn - Số lượng chuỗi cho phép trả về.Mặc định giá trị
này sẽ trả về tất cả các chuỗi được chia
Compare
Tham số tùy chọn – Xác đinh kiểu so sánh
vbBinaryCompare – Phân biệt chữ Hoa và chữ Thường (Giá trị mặc định)
vbTextCompare – Không phân biệt chữ Hoa và chữ Thường
Ví dụ
Dim strA as String
Dim varB as Variant
strA = “VBA for AutoCad”
varB = Split(strA) -> varB(0) = “VBA”:varB(1) = “for” : varB(2) = “AutoCad” varB = Split(strA,“A”) -> varB(0) = “VB”:varB(1) = “ for ” : varB(2) = “utoCad” varB = Split(strA,“A”, ,vbTextCompare) -> varB(0) = “VB”:varB(1) = “ for ” : varB(2) = “utoC”:varB(3) = “d”
varB = Split(strA,“A”,2) -> varB(0) = “VB”:varB(1) = “ for AutoCad”
Trang 38Start Tham số tùy chọn, kiểu Integer/Long – Vị trí bắt đầu thay thế, chuỗi
mới sẽ bắt đầu từ vị trí này.Giá trị mặc định bằng 1
Count Tham số tùy chọn, kiểu Integer/Long – Số lần thay thế.Giá trị mặc
định là tất cả các vị trí sẽ được thay thế
Compare
Tham số tùy chọn – Xác đinh kiểu so sánh
vbBinaryCompare – Phân biệt chữ Hoa và chữ Thường (Giá trị mặc định)
vbTextCompare – Không phân biệt chữ Hoa và chữ Thường
Trang 39 Ví dụ
Dim strA, strB as String
strA = “VBA for AutoCad”
strB = Replace(strA, “AutoCad”, “Excel”) -> strB = “VBA for Excel”
strB = Repleca(strA,“A”, “B”, 5) -> strB = “for ButoCad”
strB = Split(strA,“A”, “B”, 5, 3 ,vbTextCompare) -> var = “for ButoCbd”
varB = Split(strA,“A”,2) -> varB(0) = “VB”:varB(1) = “ for AutoCad”
Tham số tùy chọn – Xác đinh kiểu so sánh
vbBinaryCompare – Phân biệt chữ Hoa và chữ Thường (Giá trị mặc định)
vbTextCompare – Không phân biệt chữ Hoa và chữ Thường
Trang 40 Giá trị trả về của hàm StrComp
Ví dụ
Dim strA, strB,StrC as String
strA = “VBA for AutoCad”
strB = “VBA for AutoCad”
strC = “VBA for Autocad”
Dim returnValue as Integer
returnValue = StrComp(strA, strB) > returnValue = 0
returnValue = StrComp(strA, strC) > returnValue = -1
returnValue = StrComp(strA, strC, vbTextCompare) > returnValue = 0