7 minute read

7. Các toán tử và hàm thông dụng

Redim <tên_mảng> (<các thông số về chiều>) as <tên kiểu>

Chú ý rằng <tên_kiểu> phải đúng như khai báo ban đầu, các thông số về chiều có thể khác trước cả về số chiều và kích thước của từng chiều. Khi đó, các dữ liệu cũ trong mảng không còn nữa, thay vào đó là những phần tử mới được khởi tạo.

Advertisement

6.6. Khai báo, tạo và làm việc với biến đối tượng

Khai báo và tạo biến đối tượng phải dùng thêm từ khóa New

Dim <tên_biến> as New <Kiểu_dữ_liệu>

<Kiểu_dữ_liệu> là lớp (class) đã được định nghĩa từ trước. Phép gán đối tượng được thực hiện với từ khóa Set

Set <biến_đối_tượng> = <giá_trị>

Chú ý rằng nếu thực hiện khai báo một biến đối tượng như thông thường (không có từ khóa New) thì biến thực sự chưa được tạo ra. Trong trường hợp đó, người sử dụng phải tạo và gán đối tượng với các từ khoá tương ứng là New và Set.

Dim <tên_biến> as <Kiểu_dữ_liệu> Set <tên_biến> = New <Kiểu_dữ_liệu>

CHÚ Ý Câu lệnh Set không phải là câu lệnh khai báo, vì vậy nó phải được viết trong một chương trình con nào đó chứ không thể nằm trong phần General của một mô-đun.

Làm việc với một biến đối tượng tức là quá trình thao tác với đối tượng thông qua các thuộc tính, phương thức và các sự kiện của đối tượng đó. Để truy cập tới các thuộc tính và phương thức của đối tượng ta sử dụng theo cú pháp sau, chú ý đến dấu chấm ( . ) giữa tên biến và tên thuộc tính hay tên phương thức:

<Tên_biến>.<Tên_thuộc_tính> <Tên_biến>.<Tên_phương_thức> <(tham_số_của_phương_thức)>

7. Các toán tử và hàm thông dụng

7.1. Các toán tử

Toán tử được sử dụng cho mục đích xử lý dữ liệu. Ta sử dụng các toán tử để thực hiện tính toán, so sánh, gán và thực hiện nhiều thao tác khác. Dưới đây là danh sách và ý nghĩa của một số toán tử thông dụng:

Toán tử Mô tả

Toán tử gán = Gán giá trị cho biến hoặc thuộc tính Toán tử toán học + Cộng

- Trừ * Nhân / Chia \ Chia lấy phần nguyên Mod Chia lấy phần dư ^ Luỹ thừa Toán tử logic Not Trả về giá trị phủ định với giá trị biểu thức. Not(TRUE)=FALSE And Nối logic hai biểu thức. (TRUE And TRUE)=TRUE; các trường hợp khác cho kết quả bằng FALSE Or (FALSE or FALSE)=FALSE; các trường hợp khác cho kết quả là TRUE Xor Cho kết quả TRUE nếu hai đối số có cùng giá trị; ngược lại cho kết quả là FALSE Eqv So sánh hai giá trị logic; cách thức xử lý tương tự như toán tử Xor Toán tử so sánh = So sánh bằng <> Khác nhau > Lớn hơn >= Lớn hơn hoặc bằng < Nhỏ hơn <= Nhỏ hơn hoặc bằng

7.2. Các hàm toán học

Các hàm toán học được chứa trong thư viện Math (có thể tra cứu thư viện này bằng Object Browser) và có nhiệm vụ thực hiện các phép toán thông thường hay gặp. Sau đây là một số hàm thông dụng:

Hàm Mô tả

Abs(x) Lấy giá trị tuyệt đối Exp(x) Lấy mũ cơ số tự nhiên Log(x) Logarit cơ số tự nhiên Sqr(x) Lấy bình phương Cos(x), Sin(x), Tan(x) Hàm lượng giác Atn(x) Hàm lượng giác ngược Fix(x) Láy phần nguyên (trước dấu phẩy). Fix(3.7)=3 Int(x) Lấy phần nguyên đã được làm tròn. Int(3.7)=4 Round(x,num) Làm tròn số thực <x> đến <num> chữ số sau dấu phẩy Val(str) Chuyển đổi chuỗi <str> thành giá trị kiểu số

7.3. Các hàm chuyển đổi dữ liệu

Chuyển đổi định dạng số liệu là một nhu cầu thường gặp trong lập trình do các ngôn ngữ lập trình luôn đòi hỏi kiểu dữ liệu phải rõ ràng và cố định cho từng biến nhằm tránh phát sinh các lỗi sau này. Việc chuyển đổi này, nếu trong trường hợp thông thường , thì VB sẽ tự động thực

hiện. Nhưng khi gặp các yêu cầu đặc biệt thì buộc người dùng phải sử dụng những hàm chuyển đổi phù hợp.

CHÚ Ý Việc chuyển đổi kiểu dữ liệu luôn có thể tạo ra lỗi do không thể chuyển đổi được hoặc phát sinh kết quả sai. Cho nên khi sử dụng cần chú ý đến các khả năng gây lỗi của việc chuyển đổi kiểu dữ liệu.

Các hàm này được chứa trong thư viện Conversion (có thể tra cứu thư viện này bằng Object Browser). Sau đây là một số hàm thông dụng:

Hàm Mô tả

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 nguyên (Integer) CLng(Expression) Chuyển đổi dữ liệu sang kiểu nguyên (Long) CDbl(Expression) Chuyển đổi dữ liệu sang kiểu thực (Double) CSng(Expression) Chuyển đổi dữ liệu sang kiểu thực (Single) CStr(Expression) Chuyển đổi dữ liệu sang kiểu xâu (String) Str(Number) Chuyển đổi dữ liệu số sang kiểu xâu (String) Val(String As String) Chuyển đổi dữ liệu từ String sang Double

Ví dụ:

Public Sub Test () Dim StrA as String Dim A as Double StrA=”1234” A=Val(StrA) ‘ Kết quả A=1234 Debug.print A A=4567 StrA=Str(A) ‘ Kết quả StrA=”4567” Debug.Print StrA End Sub

GỢI Ý Để có thể chạy thử các đoạn mã lênh trên, trong VBA IDE, trước hết cần tạo ra một mô-đun trong dự án (nếu chưa có) sau đó tạo ra một chương trình con dạng Sub và nhập đoạn mã lệnh cần thử vào chương trình con này. Đặt con trỏ soạn thảo mã lệnh ở bất cứ dòng nào trong chương trình con đó và bấm phím F5 để chạy chương trình.

Kết quả như sau:

GỢI Ý Cửa sổ Immediate là một bộ phận trong VBA IDE, bật / tắt cửa sổ này được thực hiện trong menu View của VBA IDE. Khi sử dụng lệnh Debug.Print <tên_biến> thì giá trị của biến sẽ được thể hiện trong cửa sổ Immediate khi chương trình hoạt động và được lưu lại ngay cả khi chương trình kết thúc. Cửa sổ này thường được dùng với mục đích gỡ rối khi lập trình. Khi nội dung trong cửa sổ này nhiều quá thì ta có thể xóa bớt bằng cách chọn vùng cần xóa và bấm phím Delete.

7.4. Các hàm xử lý chuỗi

Các hàm loại này được chứa trong thư viện Strings (có thể tra cứu thư viện này bằng Object Browser). Sau đây là một số hàm thông dụng:

Hàm Mô tả

Asc(x) Trả về mã ASCII của ký tự đầu trong một chuỗi Chr(x) Chuyển đổi từ mã ASCII sang một ký tự Left(String, Length as Long) Trích dữ liệu bên trái của một chuỗi Mid(String, Start As Long, [Length]) Trích dữ liệu phần giữa của một chuỗi Right(String, Length As Long) Trích dữ liệu phần bên phải của một chuỗi Split(String) Tách một chuỗi dài thành một mảng gồm nhiều chuỗi nhỏ hơn Joint(StringArray) Gộp một mảng các chuỗi thành một chuỗi duy nhất Len(String) Trả về độ dài của chuỗi (số lượng ký tự trong chuỗi bao gồm cả ký tự trống) Ucase(String) Hàm thực hiện đổi tất cả các ký tự trong chuỗi thành chữ HOA. InStr([start, ]string1, string2[, compare]) Trả về vị trí bắt đầu của chuỗi String2 trong chuỗi String1.

Ví dụ:

Public Sub Test() Dim StrArDes() As String ' Mảng các chuỗi được khai báo dạng mảng động Dim StrScr As String 'Chuỗi ban đầu StrScr = "Point1_23.5_4.5_44.8" StrArDes = Split(StrScr, "_") ' Tách chuỗi StrScr thành một mảng các chuỗi và đưa vào StrArDes, ' kí tự ngăn cách là "_" ' Khi đó StrArDes(0)="Point1”, StrArDes(1)="23.5" ' StrArDes(2)="4.5", StrArDes(3)="44.8" Debug.Print StrArDes(0), StrArDes(1), StrArDes(2), StrArDes(3) End Sub

Kết quả sẽ như sau:

Lưu ý là dấu “_” trong ví dụ trên có thể thay thế bằng bất cứ ký tự nào.

CHÚ Ý Trong tất cả các ngôn ngữ lập trình, khái niệm chuỗi số và số là khác nhau. Ví dụ khi gán A=”123” thì giá trị của A là một chuỗi ký tự gồm “1”, “2” và “3”. Còn khi gán B=123 thì giá trị của B là một trăm hai mươi ba. Để tạo ra một chuỗi có chứa dấu nháy kép (“) bên trong nó thì cần sử dụng thêm hai dấu nháy kép nữa. Ví dụ, trong biểu thức sau: s = “ABC” “123” thì giá trị của biến s là: ABC”123

This article is from: