VBA – Tổng quan
VBA là viết tắt của V isual B asic cho A ứng dụng một ngôn ngữ lập trình hướng sự kiện từ Microsoft hiện đang được sử dụng chủ yếu với các ứng dụng văn phòng của Microsoft như MSExcel, MS-Word và MS-Access.
Nó giúp các kỹ thuật viên xây dựng các ứng dụng và giải pháp tùy chỉnh để tăng cường khả năng của các ứng dụng đó. Ưu điểm của thiết bị này là bạn KHÔNG CẦN cài đặt trực quan cơ bản trên PC của chúng tôi, tuy nhiên, cài đặt Office sẽ giúp hoàn thành mục đích.
Bạn có thể sử dụng VBA trong tất cả các phiên bản văn phòng, ngay từ MS-Office 97 đến MS-Office 2013 và với bất kỳ phiên bản mới nhất nào có sẵn. Trong số VBA, Excel VBA là phổ biến nhất.Ưu điểm của việc sử dụng VBA là bạn có thể xây dựng các công cụ rất mạnh trong MS Excel bằng lập trình tuyến tính.
Tuyển tập những tài liệu hay nhất về lập trình VBA Macro trên Excel tải về free dành cho các bạn.
Áp dụng VBA
Bạn có thể tự hỏi tại sao sử dụng VBA trong Excel vì MS-Excel tự cung cấp vô số hàm sẵn có. MS-Excel chỉ cung cấp các hàm sẵn có cơ bản có thể không đủ để thực hiện các phép tính phức tạp.Trong hoàn cảnh như vậy, VBA trở thành giải pháp rõ ràng nhất.
Ví dụ: rất khó để tính toán khoản trả nợ hàng tháng của khoản vay bằng các công thức tích hợp của Excel. Thay vào đó, thật dễ dàng để lập trình VBA cho một phép tính như vậy.
Truy cập Trình chỉnh sửa VBA
Trong cửa sổ Excel, nhấn “ALT + F11”. Một cửa sổ VBA mở ra như thể hiện trong ảnh chụp màn hình sau đây.
VBA – Macro Excel
Trong chương này, bạn sẽ học cách viết một macro đơn giản theo cách từng bước.
Bước 1 – Đầu tiên, bật menu ‘Nhà phát triển’ trong Excel 20XX. Để làm tương tự, bấm vào Tệp → Tùy chọn.
Bước 2 – Nhấp vào ‘Tùy chỉnh tab Dải băng và kiểm tra’ Nhà phát triển ‘. Nhấp vào ‘OK’.
Bước 3 – Dải băng ‘Nhà phát triển’ xuất hiện trên thanh menu.
Bước 4 – Nhấp vào nút ‘Visual Basic’ để mở Trình chỉnh sửa VBA.
Bước 5 – Bắt đầu viết kịch bản bằng cách thêm một nút. Nhấp vào Chèn → Chọn nút.
Bước 6 – Thực hiện nhấp chuột phải và chọn ‘thuộc tính’.
Bước 7 – Chỉnh sửa tên và chú thích như trong ảnh chụp màn hình sau.
Bước 8 – Bây giờ bấm đúp vào nút và phác thảo thủ tục phụ sẽ được hiển thị như trong ảnh chụp màn hình sau.
Bước 9 – Bắt đầu mã hóa bằng cách thêm một tin nhắn.
Private Sub say_helloworld_Click()
MsgBox "Hi"
End Sub
Bước 10 – Nhấp vào nút để thực hiện quy trình phụ. Đầu ra của thủ tục phụ được hiển thị trong ảnh chụp màn hình sau.
Lưu ý – Trong các chương tiếp theo, chúng tôi sẽ trình bày bằng cách sử dụng một nút đơn giản, như được giải thích từ bước 1 đến 10. Do đó, điều quan trọng là phải hiểu kỹ chương này.
VBA – Điều khoản Excel
Trong chương này, bạn sẽ tự làm quen với các thuật ngữ VBA excel thường được sử dụng. Các thuật ngữ này sẽ được sử dụng trong các mô-đun tiếp theo, do đó hiểu từng thuật ngữ này là quan trọng.
Mô-đun
Các mô-đun là khu vực nơi mã được viết. Đây là một Workbook mới, do đó không có bất kỳ Mô-đun nào.
Để chèn Mô-đun, điều hướng đến Chèn → Mô-đun. Khi một mô-đun được chèn, ‘module1’ được tạo.
Trong các mô-đun, chúng ta có thể viết mã VBA và mã được viết trong một Quy trình. Một thủ tục / Thủ tục phụ là một chuỗi các câu lệnh VBA hướng dẫn những việc cần làm.
Thủ tục
Các thủ tục là một nhóm các câu lệnh được thực thi toàn bộ, hướng dẫn Excel cách thực hiện một tác vụ cụ thể. Nhiệm vụ được thực hiện có thể là một nhiệm vụ rất đơn giản hoặc rất phức tạp. Tuy nhiên, đó là một thực hành tốt để chia các thủ tục phức tạp thành các quy trình nhỏ hơn.
Hai loại thủ tục chính là Sub và Function.
Chức năng
Hàm là một nhóm mã có thể tái sử dụng, có thể được gọi ở bất cứ đâu trong chương trình của bạn. Điều này giúp loại bỏ sự cần thiết phải viết cùng một mã nhiều lần. Điều này giúp các lập trình viên chia một chương trình lớn thành một số chức năng nhỏ và có thể quản lý được.
Ngoài các hàm sẵn có, VBA cũng cho phép viết các hàm do người dùng định nghĩa và các câu lệnh được viết giữa Hàm và Hàm cuối .
Thủ tục phụ
Thủ tục phụ hoạt động tương tự như các chức năng. Trong khi các thủ tục phụ KHÔNG trả về giá trị, các hàm có thể hoặc không thể trả về giá trị.Thủ tục phụ CÓ THỂ được gọi mà không cần từ khóa cuộc gọi. Các thủ tục phụ luôn được đính kèm trong các câu lệnh Sub và End Sub .
VBA – Nhận xét vĩ mô
Nhận xét được sử dụng để ghi lại logic chương trình và thông tin người dùng mà các lập trình viên khác có thể làm việc liền mạch trên cùng một mã trong tương lai.
Nó bao gồm thông tin như được phát triển bởi, được sửa đổi bởi và cũng có thể bao gồm logic kết hợp. Bình luận bị bỏ qua bởi thông dịch viên trong khi thực hiện.
Nhận xét trong VBA được biểu thị bằng hai phương pháp.
-
Bất kỳ tuyên bố nào bắt đầu bằng một trích dẫn (‘) đều được coi là nhận xét. Sau đây là một ví dụ.
' This Script is invoked after successful login
' Written by : TutorialsPoint
' Return Value : True / False
-
Bất kỳ tuyên bố nào bắt đầu với từ khóa “REM”. Sau đây là một ví dụ.
REM This Script is written to Validate the Entered Input
REM Modified by : Tutorials point/user2
VBA – Hộp tin nhắn
Hàm MsgBox hiển thị hộp thông báo và đợi người dùng nhấp vào nút và sau đó một hành động được thực hiện dựa trên nút được người dùng nhấp vào.
Cú pháp
MsgBox(prompt[,buttons][,title][,helpfile,context])
Mô tả về Thông Số
-
Nhắc – Một tham số bắt buộc. Một chuỗi được hiển thị dưới dạng một thông báo trong hộp thoại. Độ dài tối đa của dấu nhắc là khoảng 1024 ký tự. Nếu thông điệp kéo dài đến hơn một dòng, thì các dòng có thể được phân tách bằng ký tự trả về vận chuyển (Chr (13)) hoặc ký tự nguồn cấp dữ liệu (Chr (10)) giữa mỗi dòng.
-
Nút – Một tham số tùy chọn. Biểu thức số chỉ định loại nút sẽ hiển thị, kiểu biểu tượng sẽ sử dụng, danh tính của nút mặc định và phương thức của hộp thông báo. Nếu để trống, giá trị mặc định cho các nút là 0.
-
Tiêu đề – Một tham số tùy chọn. Một biểu thức Chuỗi được hiển thị trong thanh tiêu đề của hộp thoại. Nếu tiêu đề được để trống, tên ứng dụng được đặt trong thanh tiêu đề.
-
Helpfile – Một tham số tùy chọn. Biểu thức Chuỗi xác định tệp Trợ giúp sẽ sử dụng để cung cấp trợ giúp theo ngữ cảnh cho hộp thoại.
-
Bối cảnh – Một tham số tùy chọn. Biểu thức số xác định số ngữ cảnh Trợ giúp được chỉ định bởi tác giả Trợ giúp cho chủ đề Trợ giúp phù hợp. Nếu bối cảnh được cung cấp, helpfile cũng phải được cung cấp.
Các nút thông số có thể thực hiện bất kỳ các giá trị sau –
-
0 vbOKOnly – Chỉ hiển thị nút OK.
-
1 vbOK Hủy – Hiển thị các nút OK và Hủy.
-
2 vbAbortR temIgnore – Hiển thị các nút Hủy bỏ, Thử lại và Bỏ qua.
-
3 vbYesNo Hủy – Hiển thị các nút Có, Không và Hủy.
-
4 vbYesKhông – Hiển thị các nút Có và Không.
-
5 vbR temftime – Hiển thị các nút Thử lại và Hủy.
-
16 vbCritical – Hiển thị biểu tượng Thông điệp quan trọng.
-
32 vbQuestion – Hiển thị biểu tượng Truy vấn cảnh báo.
-
48 vbExclamation – Hiển thị biểu tượng Thông báo cảnh báo.
-
64 vbIn information – Hiển thị biểu tượng Thông báo tin nhắn.
-
0 vbDefaultButton1 – Nút đầu tiên là mặc định.
-
256 vbDefaultButton2 – Nút thứ hai là mặc định.
-
512 vbDefaultButton3 – Nút thứ ba là mặc định.
-
768 vbDefaultButton4 – Nút thứ tư là mặc định.
-
0 vbApplicationModal Phương thức ứng dụng – Ứng dụng hiện tại sẽ không hoạt động cho đến khi người dùng trả lời hộp thông báo.
-
4096 vbSystemModal Hệ thống phương thức – Tất cả các ứng dụng sẽ không hoạt động cho đến khi người dùng trả lời hộp thông báo.
Các giá trị trên được phân chia hợp lý thành bốn nhóm: Nhóm đầu tiên (0 đến 5) cho biết các nút sẽ được hiển thị trong hộp thông báo. Nhóm thứ hai (16, 32, 48, 64) mô tả kiểu của biểu tượng sẽ được hiển thị, nhóm thứ ba (0, 256, 512, 768) cho biết nút nào phải là mặc định và nhóm thứ tư (0, 4096 ) xác định phương thức của hộp thông báo.
Giá trị trả về
Hàm MsgBox có thể trả về một trong các giá trị sau có thể được sử dụng để xác định nút mà người dùng đã nhấp vào hộp thông báo.
- 1 – vbOK – OK đã được nhấp
- 2 – vb Hủy – Hủy đã được nhấp
- 3 – vb Abort – Đã hủy bỏ
- 4 – vbRatures – Thử lại đã được nhấp
- 5 – vbIgnore – Bỏ qua đã được nhấp
- 6 – vbYes – Có được nhấp
- 7 – vbKhông – Không được nhấp
Thí dụ
Function MessageBox_Demo()
'Message Box with just prompt message
MsgBox("Welcome")
'Message Box with title, yes no and cancel Butttons
int a = MsgBox("Do you like blue color?",3,"Choose options")
' Assume that you press No Button
msgbox ("The Value of a is " & a)
End Function
Đầu ra
Bước 1 – Chức năng trên có thể được thực thi bằng cách nhấp vào nút “Chạy” trên Cửa sổ VBA hoặc bằng cách gọi hàm từ Bảng tính Excel như trong ảnh chụp màn hình sau.
Bước 2 – Hộp Tin nhắn đơn giản được hiển thị với thông báo “Chào mừng” và Nút “OK”
Bước 3 – Sau khi nhấp vào OK, một hộp thoại khác được hiển thị với thông báo cùng với các nút “có, không và hủy”.
Bước 4 – Sau khi nhấp vào nút ‘Không’, giá trị của nút đó (7) được lưu dưới dạng số nguyên và hiển thị dưới dạng hộp thông báo cho người dùng như trong ảnh chụp màn hình sau. Sử dụng giá trị này, có thể hiểu người dùng đã nhấp vào nút nào.
VBA – InputBox
Hàm InputBox nhắc người dùng nhập giá trị. Sau khi nhập các giá trị, nếu người dùng nhấp vào nút OK hoặc nhấn ENTER trên bàn phím, chức năng InputBox sẽ trả về văn bản trong hộp văn bản. Nếu người dùng nhấp vào nút Hủy, chức năng sẽ trả về một chuỗi trống (“”).
Cú pháp
InputBox(prompt[,title][,default][,xpos][,ypos][,helpfile,context])
Mô tả về Thông Số
-
Nhắc – Một tham số bắt buộc. Một chuỗi được hiển thị dưới dạng một thông báo trong hộp thoại. Độ dài tối đa của dấu nhắc là khoảng 1024 ký tự. Nếu thông điệp kéo dài đến hơn một dòng, thì các dòng có thể được phân tách bằng ký tự trả về vận chuyển (Chr (13)) hoặc ký tự nguồn cấp dữ liệu (Chr (10)) giữa mỗi dòng.
-
Tiêu đề – Một tham số tùy chọn. Một biểu thức Chuỗi được hiển thị trong thanh tiêu đề của hộp thoại. Nếu tiêu đề được để trống, tên ứng dụng được đặt trong thanh tiêu đề.
-
Mặc định – Một tham số tùy chọn. Một văn bản mặc định trong hộp văn bản mà người dùng muốn được hiển thị.
-
XPos – Một tham số tùy chọn. Vị trí của trục Xbiểu thị khoảng cách nhanh chóng từ phía bên trái của màn hình theo chiều ngang. Nếu để trống, hộp đầu vào được căn giữa theo chiều ngang.
-
YPos – Một tham số tùy chọn. Vị trí của trục Ybiểu thị khoảng cách nhắc từ phía bên trái của màn hình theo chiều dọc. Nếu để trống, hộp đầu vào được căn giữa theo chiều dọc.
-
Helpfile – Một tham số tùy chọn. Một biểu thức Chuỗi xác định tệp trợ giúp được sử dụng để cung cấp Trợ giúp theo ngữ cảnh cho hộp thoại.
-
bối cảnh – Một tham số tùy chọn. Biểu thức số xác định số ngữ cảnh Trợ giúp được chỉ định bởi tác giả Trợ giúp cho chủ đề Trợ giúp phù hợp. Nếu bối cảnh được cung cấp, helpfile cũng phải được cung cấp.
Thí dụ
Chúng ta hãy tính diện tích của một hình chữ nhật bằng cách lấy các giá trị từ người dùng trong thời gian chạy với sự trợ giúp của hai hộp đầu vào (một cho chiều dài và một cho chiều rộng).
Function findArea()
Dim Length As Double
Dim Width As Double
Length = InputBox("Enter Length ", "Enter a Number")
Width = InputBox("Enter Width", "Enter a Number")
findArea = Length * Width
End Function
Đầu ra
Bước 1 – Để thực hiện tương tự, hãy gọi bằng tên hàm và nhấn Enter như trong ảnh chụp màn hình sau.
Bước 2 – Sau khi thực hiện, hộp đầu vào (chiều dài) đầu tiên được hiển thị. Nhập một giá trị vào hộp đầu vào.
Bước 3 – Sau khi nhập giá trị đầu tiên, hộp đầu vào thứ hai (chiều rộng) được hiển thị.
Bước 4 – Khi nhập số thứ hai, nhấp vào nút OK.Khu vực được hiển thị như thể hiện trong ảnh chụp màn hình sau đây.
VBA – Biến
Biến là một vị trí bộ nhớ được đặt tên được sử dụng để giữ một giá trị có thể thay đổi trong quá trình thực thi tập lệnh. Sau đây là các quy tắc cơ bản để đặt tên một biến.
-
Bạn phải sử dụng một chữ cái là ký tự đầu tiên.
-
Bạn không thể sử dụng dấu cách, dấu chấm (.), Dấu chấm than (!) Hoặc các ký tự @, &, $, # trong tên.
-
Tên không thể vượt quá 255 ký tự.
-
Bạn không thể sử dụng các từ khóa dành riêng Visual Basic làm tên biến.
Cú pháp
Trong VBA, bạn cần khai báo các biến trước khi sử dụng chúng.
Dim <<variable_name>> As <<variable_type>>
Loai du lieu
Có nhiều loại dữ liệu VBA, có thể được chia thành hai loại chính, đó là loại dữ liệu số và không số.
Kiểu dữ liệu số
Bảng sau hiển thị các loại dữ liệu số và phạm vi giá trị được phép.
Kiểu | Phạm vi của các giá trị |
---|---|
Byte | 0 đến 255 |
Số nguyên | -32,768 đến 32,767 |
Dài | -2,147,483,648 đến 2,147,483,648 |
Độc thân |
-3.402823E + 38 đến -1.401298E-45 cho các giá trị âm
1.401298E-45 đến 3.402823E + 38 cho các giá trị dương.
|
Gấp đôi |
-1.79769313486232e + 308 đến -4.94065645841247E-324 cho các giá trị âm
4.94065645841247E-324 đến 1.79769313486232e + 308 cho các giá trị dương.
|
Tiền tệ | -922,337,203,685,477,5808 đến 922,337,203,685,477,5807 |
Số thập phân |
+/- 79,228,162,514,264,337,593,543,950,335 nếu không sử dụng số thập phân
+/- 7.9228162514264337593543950335 (28 chữ số thập phân).
|
Kiểu dữ liệu không phải là số
Bảng sau hiển thị các loại dữ liệu không phải là số và phạm vi giá trị được phép.
Kiểu | Phạm vi của các giá trị |
---|---|
Chuỗi (độ dài cố định) | 1 đến 65.400 ký tự |
Chuỗi (độ dài thay đổi) | 0 đến 2 tỷ ký tự |
Ngày | Ngày 1 tháng 1 năm 100 đến ngày 31 tháng 12 năm 9999 |
Boolean | Đúng hay sai |
Vật | Bất kỳ đối tượng nhúng |
Biến thể (số) | Bất kỳ giá trị nào lớn gấp đôi |
Biến thể (văn bản) | Tương tự như chuỗi có độ dài thay đổi |
Thí dụ
Chúng ta hãy tạo một nút và đặt tên là ‘Biến thể’ để thể hiện việc sử dụng các biến.
Private Sub say_helloworld_Click()
Dim password As String
password = "Admin#1"
Dim num As Integer
num = 1234
Dim BirthDay As Date
BirthDay = DateValue("30 / 10 / 2020")
MsgBox "Passowrd is " & password & Chr(10) & "Value of num is " &
num & Chr(10) & "Value of Birthday is " & BirthDay
End Sub
Đầu ra
Khi thực thi tập lệnh, đầu ra sẽ như trong ảnh chụp màn hình sau.
VBA – Hằng
Hằng là một vị trí bộ nhớ được đặt tên được sử dụng để giữ một giá trị KHÔNG THỂ thay đổi trong quá trình thực thi tập lệnh. Nếu người dùng cố gắng thay đổi giá trị Constant, việc thực thi tập lệnh sẽ xảy ra lỗi. Các hằng số được khai báo giống như cách các biến được khai báo.
Sau đây là các quy tắc để đặt tên một hằng số.
-
Bạn phải sử dụng một chữ cái là ký tự đầu tiên.
-
Bạn không thể sử dụng dấu cách, dấu chấm (.), Dấu chấm than (!) Hoặc các ký tự @, &, $, # trong tên.
-
Tên không thể vượt quá 255 ký tự.
-
Bạn không thể sử dụng các từ khóa dành riêng Visual Basic làm tên biến.
Cú pháp
Trong VBA, chúng ta cần gán giá trị cho các hằng số được khai báo. Một lỗi được đưa ra, nếu chúng ta cố gắng thay đổi giá trị của hằng số.
Const <<constant_name>> As <<constant_type>> = <<constant_value>>
Thí dụ
Hãy để chúng tôi tạo một nút “Constant_demo” để trình bày cách làm việc với các hằng số.
Private Sub Constant_demo_Click()
Const MyInteger As Integer = 42
Const myDate As Date = #2/2/2020#
Const myDay As String = "Sunday"
MsgBox "Integer is " & MyInteger & Chr(10) & "myDate is "
& myDate & Chr(10) & "myDay is " & myDay
End Sub
Đầu ra
Khi thực thi tập lệnh, đầu ra sẽ được hiển thị như trong ảnh chụp màn hình sau.
VBA – Nhà điều hành
Một toán tử có thể được định nghĩa bằng một biểu thức đơn giản – 4 + 5 bằng 9. Ở đây, 4 và 5 được gọi là toán hạng và + được gọi là toán tử .VBA hỗ trợ các loại toán tử sau –
- Toán tử số học
- Toán tử so sánh
- Toán tử logic (hoặc quan hệ)
- Toán tử ghép
Các nhà khai thác Arithmatic
Các toán tử số học sau được VBA hỗ trợ.
Giả sử biến A giữ 5 và biến B giữ 10, sau đó –
Nhà điều hành | Sự miêu tả | Thí dụ |
---|---|---|
+ | Thêm hai toán hạng | A + B sẽ cho 15 |
– | Trừ toán hạng thứ hai từ toán hạng thứ nhất | A – B sẽ cho -5 |
* | Nhân lên cả hai toán hạng | A * B sẽ cho 50 |
/ | Chia tử số theo mẫu số | B / A sẽ cho 2 |
% | Toán tử mô đun và phần còn lại sau khi chia số nguyên | B% A sẽ cho 0 |
^ | Toán tử lũy thừa | B ^ A sẽ cho 100000 |
Các toán tử so sánh
Có các toán tử so sánh sau được hỗ trợ bởi VBA.
Giả sử biến A giữ 10 và biến B giữ 20, sau đó –
Nhà điều hành | Sự miêu tả | Thí dụ |
---|---|---|
= = | Kiểm tra xem giá trị của hai toán hạng có bằng nhau hay không. Nếu có, thì điều kiện là đúng. | (A = B) là Sai. |
<> | Kiểm tra xem giá trị của hai toán hạng có bằng nhau hay không. Nếu các giá trị không bằng nhau, thì điều kiện là đúng. | (A <> B) là Đúng. |
> | Kiểm tra xem giá trị của toán hạng bên trái có lớn hơn giá trị của toán hạng bên phải không. Nếu có, thì điều kiện là đúng. | (A> B) là Sai. |
< | Kiểm tra xem giá trị của toán hạng bên trái nhỏ hơn giá trị của toán hạng bên phải.Nếu có, thì điều kiện là đúng. | (A <B) là Đúng. |
> = | Kiểm tra xem giá trị của toán hạng bên trái lớn hơn hoặc bằng giá trị của toán hạng bên phải. Nếu có, thì điều kiện là đúng. | (A> = B) là Sai. |
<= | Kiểm tra xem giá trị của toán hạng bên trái nhỏ hơn hoặc bằng giá trị của toán hạng bên phải. Nếu có, thì điều kiện là đúng. | (A <= B) là Đúng. |
Các toán tử logic
Các toán tử logic sau được hỗ trợ bởi VBA.
Giả sử biến A giữ 10 và biến B giữ 0, sau đó –
Nhà điều hành | Sự miêu tả | Thí dụ |
---|---|---|
VÀ | Được gọi là logic và toán tử. Nếu cả hai điều kiện đều đúng, thì Biểu thức là đúng. | a <> 0 VÀ b <> 0 là Sai. |
HOẶC LÀ | Được gọi là logic HOẶC Toán tử. Nếu bất kỳ một trong hai điều kiện là True, thì điều kiện đó là đúng. | a <> 0 HOẶC b <> 0 là đúng. |
KHÔNG PHẢI | Được gọi là logic KHÔNG khai thác.Được sử dụng để đảo ngược trạng thái logic của toán hạng của nó. Nếu một điều kiện là đúng, thì toán tử logic logic sẽ làm sai. | KHÔNG (a <> 0 HOẶC b <> 0) là sai. |
XOR | Được gọi là loại trừ hợp lý. Nó là sự kết hợp giữa KHÔNG và HOẶC Toán tử. Nếu một và chỉ một, các biểu thức đánh giá là True, kết quả là True. | (a <> 0 XOR b <> 0) là đúng. |
Các nhà khai thác liên kết
Các nhà khai thác sau đây được VBA hỗ trợ.
Giả sử biến A giữ 5 và biến B giữ 10 thì –
Nhà điều hành | Sự miêu tả | Thí dụ |
---|---|---|
+ | Thêm hai giá trị dưới dạng biến. Giá trị là số | A + B sẽ cho 15 |
& | Kết hợp hai giá trị | A & B sẽ cho 510 |
Giả sử biến A = “Microsoft” và biến B = “VBScript”, sau đó –
Nhà điều hành | Sự miêu tả | Thí dụ |
---|---|---|
+ | Kết hợp hai giá trị | A + B sẽ cung cấp cho MicrosoftVBScript |
& | Kết hợp hai giá trị | A & B sẽ cung cấp cho MicrosoftVBScript |
Lưu ý – Toán tử ghép có thể được sử dụng cho cả số và chuỗi. Đầu ra phụ thuộc vào ngữ cảnh, nếu các biến giữ giá trị số hoặc giá trị chuỗi.
VBA – Quyết định
Ra quyết định cho phép các lập trình viên kiểm soát luồng thực thi của một tập lệnh hoặc một trong các phần của nó. Việc thực hiện được điều chỉnh bởi một hoặc nhiều câu điều kiện.
Sau đây là hình thức chung của cấu trúc ra quyết định điển hình được tìm thấy trong hầu hết các ngôn ngữ lập trình.
VBA cung cấp các loại tuyên bố ra quyết định sau đây. Nhấp vào các liên kết sau để kiểm tra chi tiết của họ.
S.No. | Tuyên bố & Mô tả |
---|---|
1 | nếu tuyên bố
Một khi tuyên bố bao gồm một biểu thức Boolean theo sau là một hoặc nhiều câu lệnh.
|
2 | if..else tuyên bố
Một câu lệnh if khác bao gồm một biểu thức Boolean theo sau bởi một hoặc nhiều câu lệnh. Nếu điều kiện là True, các câu lệnh bên dưới câu lệnh If được thực thi. Nếu điều kiện là sai, phần Khác của tập lệnh được thực thi.
|
3 | nếu … otherif..else tuyên bố
Một khi tuyên bố tiếp theo một hoặc nhiều ElseIf báo cáo, mà bao gồm các biểu thức Boolean và sau đó tiếp theo là một tùy chọn else statement , mà thực hiện khi có đủ các điều kiện trở thành sai.
|
4 | lồng nhau nếu báo cáo
Một nếu hoặc elseif tuyên bố bên khác nếu hoặcelseif statement (s).
|
5 | tuyên bố chuyển đổi
Một câu lệnh chuyển đổi cho phép một biến được kiểm tra sự bằng nhau đối với một danh sách các giá trị.
|
VBA – Vòng lặp
Có thể có một tình huống khi bạn cần thực thi một khối mã nhiều lần. Nói chung, các câu lệnh được thực hiện tuần tự: Câu lệnh đầu tiên trong một hàm được thực thi đầu tiên, tiếp theo là câu lệnh thứ hai, v.v.
Ngôn ngữ lập trình cung cấp các cấu trúc điều khiển khác nhau cho phép các đường dẫn thực thi phức tạp hơn.
Một câu lệnh lặp cho phép chúng ta thực thi một câu lệnh hoặc nhóm các câu lệnh nhiều lần. Sau đây là hình thức chung của một tuyên bố vòng lặp trong VBA.
VBA cung cấp các loại vòng lặp sau để xử lý các yêu cầu lặp. Nhấp vào các liên kết sau để kiểm tra chi tiết của họ.
S.No. | Loại vòng lặp & Mô tả |
---|---|
1 | cho vòng lặp
Thực hiện một chuỗi các câu lệnh nhiều lần và viết tắt mã quản lý biến vòng lặp.
|
2 | cho .. vòng lặp
Điều này được thực thi nếu có ít nhất một phần tử trong nhóm và được nhắc lại cho mỗi phần tử trong một nhóm.
|
3 | while..wend loop
Điều này kiểm tra điều kiện trước khi thực hiện cơ thể vòng lặp.
|
4 | làm .. trong khi các vòng lặp
Các câu lệnh do..While sẽ được thực thi miễn là điều kiện là True. (Tức là) Vòng lặp sẽ được lặp lại cho đến khi điều kiện là Sai.
|
5 | làm..các vòng lặp
Các câu lệnh do..Until sẽ được thực thi miễn là điều kiện là Sai. (Tức là) Vòng lặp phải được lặp lại cho đến khi điều kiện là True.
|
Báo cáo kiểm soát vòng lặp
Các câu lệnh điều khiển vòng lặp thay đổi thực thi từ chuỗi bình thường của nó. Khi thực thi để lại một phạm vi, tất cả các câu lệnh còn lại trong vòng lặp KHÔNG được thực thi.
VBA hỗ trợ các tuyên bố kiểm soát sau đây. Nhấp vào các liên kết sau để kiểm tra chi tiết của họ.
S.No. | Tuyên bố và mô tả kiểm soát |
---|---|
1 | Thoát lệnh
Chấm dứt câu lệnh For loop và chuyển thực thi sang câu lệnh ngay sau vòng lặp
|
2 | Thoát lệnh
Chấm dứt câu lệnh Do While và chuyển thực thi sang câu lệnh ngay sau vòng lặp
|
VBA – Chuỗi
Chuỗi là một chuỗi các ký tự, có thể bao gồm cả bảng chữ cái, số, ký tự đặc biệt hoặc tất cả chúng.Một biến được gọi là một chuỗi nếu nó được đặt trong dấu ngoặc kép “”.
Cú pháp
variablename = "string"
Ví dụ
str1 = "string" ' Only Alphabets
str2 = "132.45" ' Only Numbers
str3 = "!@#$;*" ' Only Special Characters
Str4 = "Asc23@#" ' Has all the above
Hàm chuỗi
Có các hàm Chuỗi VBA được xác định trước, giúp các nhà phát triển làm việc với các chuỗi rất hiệu quả. Sau đây là các phương thức String được hỗ trợ trong VBA. Vui lòng nhấp vào từng phương thức để biết chi tiết.
S.No. | Tên và mô tả chức năng |
---|---|
1 | InStr
Trả về lần xuất hiện đầu tiên của chuỗi con được chỉ định. Tìm kiếm xảy ra từ trái sang phải.
|
2 | م rev
Trả về lần xuất hiện đầu tiên của chuỗi con được chỉ định. Tìm kiếm xảy ra từ bên phải sang bên trái.
|
3 | Lcase
Trả về chữ thường của chuỗi được chỉ định.
|
4 | Ucase
Trả về chữ hoa của chuỗi đã chỉ định.
|
5 | Trái
Trả về một số ký tự cụ thể từ phía bên trái của chuỗi.
|
6 | Đúng
Trả về một số ký tự cụ thể từ phía bên phải của chuỗi.
|
7 | Giữa
Trả về một số ký tự cụ thể từ một chuỗi dựa trên các tham số đã chỉ định.
|
số 8 | Ltrim
Trả về một chuỗi sau khi loại bỏ khoảng trắng ở bên trái của chuỗi được chỉ định.
|
9 | Rtrim
Trả về một chuỗi sau khi loại bỏ khoảng trắng ở bên phải của chuỗi được chỉ định.
|
10 | Cắt
Trả về một giá trị chuỗi sau khi loại bỏ cả khoảng trắng hàng đầu và dấu trống.
|
11 | Len
Trả về độ dài của chuỗi đã cho.
|
12 | Thay thế
Trả về một chuỗi sau khi thay thế một chuỗi bằng một chuỗi khác.
|
13 | Không gian
Điền vào một chuỗi với số lượng không gian được chỉ định.
|
14 | Stromp
Trả về một giá trị số nguyên sau khi so sánh hai chuỗi được chỉ định.
|
15 | Chuỗi
Trả về một chuỗi với một ký tự được chỉ định cho số lần được chỉ định.
|
16 | Tàn dư
Trả về một chuỗi sau khi đảo ngược chuỗi các ký tự của chuỗi đã cho.
|
VBA – Chức năng ngày giờ
Hàm ngày và thời gian VBScript giúp nhà phát triển chuyển đổi ngày và giờ từ định dạng này sang định dạng khác hoặc thể hiện giá trị ngày hoặc thời gian theo định dạng phù hợp với một điều kiện cụ thể.
Hàm ngày
S.No. | Mô tả chức năng |
---|---|
1 | Ngày
Một hàm, trả về ngày hệ thống hiện tại.
|
2 | CDate
Hàm, chuyển đổi một đầu vào đã cho thành ngày.
|
3 | DateAdd
Hàm trả về ngày mà khoảng thời gian đã chỉ định đã được thêm vào.
|
4 | Ngày tháng
Hàm, trả về chênh lệch giữa hai khoảng thời gian.
|
5 | DatePart
Hàm trả về một phần xác định của giá trị ngày đầu vào đã cho.
|
6 | DateSerial
Hàm, trả về một ngày hợp lệ cho năm, tháng và ngày đã cho.
|
7 | FormatDateTime
Hàm, định dạng ngày dựa trên các tham số được cung cấp.
|
số 8 | Ngày
Hàm trả về Giá trị Boolean cho dù tham số được cung cấp có phải là ngày hay không.
|
9 | ngày
Hàm trả về một số nguyên từ 1 đến 31 đại diện cho ngày của ngày đã chỉ định.
|
10 | tháng
Hàm trả về số nguyên từ 1 đến 12 đại diện cho tháng của ngày đã chỉ định.
|
11 | Năm
Hàm trả về một số nguyên biểu thị năm của ngày đã chỉ định.
|
12 | Tháng Tên
Hàm, trả về tên của tháng cụ thể cho ngày đã chỉ định.
|
13 | Tuần lễ
Hàm trả về một số nguyên (1 đến 7) đại diện cho ngày trong tuần cho ngày được chỉ định.
|
14 | Tên tuần
Hàm, trả về tên ngày trong tuần cho ngày đã chỉ định.
|
Hàm thời gian
S.No. | Mô tả chức năng |
---|---|
1 | Hiện nay
Hàm, trả về ngày và giờ hệ thống hiện tại.
|
2 | Giờ
Hàm trả về một số nguyên từ 0 đến 23 đại diện cho phần giờ của thời gian đã cho.
|
3 | Phút
Hàm trả về một số nguyên từ 0 đến 59 đại diện cho phần phút của thời gian đã cho.
|
4 | Thứ hai
Hàm trả về một số nguyên từ 0 đến 59 đại diện cho phần giây của thời gian đã cho.
|
5 | Thời gian
Một hàm, trả về thời gian hệ thống hiện tại.
|
6 | Hẹn giờ
Hàm, trả về số giây và mili giây kể từ 12:00 AM.
|
7 | Thời gian
Hàm, trả về thời gian cho đầu vào cụ thể của giờ, phút và giây.
|
số 8 | Giá trị thời gian
Hàm, chuyển đổi chuỗi đầu vào thành định dạng thời gian.
|
VBA – Mảng
Chúng tôi biết rất rõ rằng một biến là một thùng chứa để lưu trữ một giá trị. Đôi khi, các nhà phát triển ở một vị trí có thể giữ nhiều hơn một giá trị trong một biến duy nhất tại một thời điểm. Khi một loạt các giá trị được lưu trữ trong một biến duy nhất, thì nó được gọi là một biến mảng .
Khai báo mảng
Mảng được khai báo giống như cách một biến đã được khai báo ngoại trừ việc khai báo biến mảng sử dụng dấu ngoặc đơn. Trong ví dụ sau, kích thước của mảng được đề cập trong ngoặc.
'Method 1 : Using Dim
Dim arr1() 'Without Size
'Method 2 : Mentioning the Size
Dim arr2(5) 'Declared with size of 5
'Method 3 : using 'Array' Parameter
Dim arr3
arr3 = Array("apple","Orange","Grapes")
-
Mặc dù, kích thước mảng được chỉ định là 5, nó có thể chứa 6 giá trị khi chỉ mục mảng bắt đầu từ ZERO.
-
Chỉ số mảng không thể âm.
-
Mảng VBScript có thể lưu trữ bất kỳ loại biến nào trong một mảng. Do đó, một mảng có thể lưu trữ một số nguyên, chuỗi hoặc ký tự trong một biến mảng duy nhất.
Gán các giá trị cho một mảng
Các giá trị được gán cho mảng bằng cách chỉ định một giá trị chỉ mục mảng theo từng giá trị được gán. Nó có thể là một chuỗi.
Thí dụ
Thêm một nút và thêm chức năng sau.
Private Sub Constant_demo_Click()
Dim arr(5)
arr(0) = "1" 'Number as String
arr(1) = "VBScript" 'String
arr(2) = 100 'Number
arr(3) = 2.45 'Decimal Number
arr(4) = #10/07/2013# 'Date
arr(5) = #12.45 PM# 'Time
msgbox("Value stored in Array index 0 : " & arr(0))
msgbox("Value stored in Array index 1 : " & arr(1))
msgbox("Value stored in Array index 2 : " & arr(2))
msgbox("Value stored in Array index 3 : " & arr(3))
msgbox("Value stored in Array index 4 : " & arr(4))
msgbox("Value stored in Array index 5 : " & arr(5))
End Sub
Khi bạn thực hiện chức năng trên, nó tạo ra đầu ra sau.
Value stored in Array index 0 : 1
Value stored in Array index 1 : VBScript
Value stored in Array index 2 : 100
Value stored in Array index 3 : 2.45
Value stored in Array index 4 : 7/10/2013
Value stored in Array index 5 : 12:45:00 PM
Mảng đa chiều
Mảng không chỉ giới hạn trong một chiều, tuy nhiên, chúng có thể có tối đa 60 kích thước. Mảng hai chiều là những mảng được sử dụng phổ biến nhất.
Thí dụ
Trong ví dụ sau, một mảng nhiều chiều được khai báo với 3 hàng và 4 cột.
Private Sub Constant_demo_Click()
Dim arr(2,3) as Variant ' Which has 3 rows and 4 columns
arr(0,0) = "Apple"
arr(0,1) = "Orange"
arr(0,2) = "Grapes"
arr(0,3) = "pineapple"
arr(1,0) = "cucumber"
arr(1,1) = "beans"
arr(1,2) = "carrot"
arr(1,3) = "tomato"
arr(2,0) = "potato"
arr(2,1) = "sandwitch"
arr(2,2) = "coffee"
arr(2,3) = "nuts"
msgbox("Value in Array index 0,1 : " & arr(0,1))
msgbox("Value in Array index 2,2 : " & arr(2,2))
End Sub
Khi bạn thực hiện chức năng trên, nó tạo ra đầu ra sau.
Value stored in Array index : 0 , 1 : Orange
Value stored in Array index : 2 , 2 : coffee
Tuyên bố ReDim
Câu lệnh ReDim được sử dụng để khai báo các biến mảng động và phân bổ hoặc phân bổ lại không gian lưu trữ.
Cú pháp
ReDim [Preserve] varname(subscripts) [, varname(subscripts)]
Mô tả về Thông Số
-
Bảo toàn – Một tham số tùy chọn được sử dụng để bảo toàn dữ liệu trong một mảng hiện có khi bạn thay đổi kích thước của kích thước cuối cùng.
-
Varname – Một tham số bắt buộc, biểu thị tên của biến, phải tuân theo các quy ước đặt tên biến tiêu chuẩn.
-
Đăng ký – Một tham số bắt buộc, cho biết kích thước của mảng.
Thí dụ
Trong ví dụ sau, một mảng đã được xác định lại và sau đó các giá trị được bảo toàn khi kích thước hiện tại của mảng bị thay đổi.
Lưu ý – Khi thay đổi kích thước một mảng nhỏ hơn ban đầu, dữ liệu trong các phần tử bị loại sẽ bị mất.
Private Sub Constant_demo_Click()
Dim a() as variant
i = 0
redim a(5)
a(0) = "XYZ"
a(1) = 41.25
a(2) = 22
REDIM PRESERVE a(7)
For i = 3 to 7
a(i) = i
Next
'to Fetch the output
For i = 0 to ubound(a)
Msgbox a(i)
Next
End Sub
Khi bạn thực hiện chức năng trên, nó tạo ra đầu ra sau.
XYZ
41.25
22
3
4
5
6
7
Phương thức mảng
Có nhiều hàm inbuilt khác nhau trong VBScript giúp các nhà phát triển xử lý các mảng hiệu quả.Tất cả các phương thức được sử dụng cùng với mảng được liệt kê dưới đây. Vui lòng nhấp vào tên phương thức để biết chi tiết về nó.
S.No. | Mô tả chức năng |
---|---|
1 | LBound
Hàm, trả về một số nguyên tương ứng với chỉ số nhỏ nhất của các mảng đã cho.
|
2 | Cơ sở
Hàm, trả về một số nguyên tương ứng với chỉ số lớn nhất của các mảng đã cho.
|
3 | Tách
Hàm, trả về một mảng chứa một số giá trị được chỉ định. Chia dựa trên một dấu phân cách.
|
4 | Tham gia
Hàm trả về một chuỗi chứa một số chuỗi con được chỉ định trong một mảng. Đây là một chức năng hoàn toàn ngược lại của Phương pháp phân chia.
|
5 | Bộ lọc
Hàm trả về mảng dựa trên số 0 chứa tập hợp con của mảng chuỗi dựa trên tiêu chí lọc cụ thể.
|
6 | IsArray
Hàm trả về giá trị boolean cho biết biến đầu vào có phải là một mảng hay không.
|
7 | Xóa
Hàm, phục hồi bộ nhớ được phân bổ cho các biến mảng.
|
VBA – Hàm do người dùng xác định
Một chức năng là một nhóm mã tái sử dụng mà có thể được gọi là bất cứ nơi nào trong chương trình của bạn. Điều này giúp loại bỏ sự cần thiết phải viết cùng một mã nhiều lần. Điều này cho phép các lập trình viên chia một chương trình lớn thành một số chức năng nhỏ và có thể quản lý được.
Ngoài các chức năng sẵn có, VBA cũng cho phép viết các hàm do người dùng định nghĩa. Trong chương này, bạn sẽ học cách viết các hàm của riêng bạn trong VBA.
Định nghĩa hàm
Hàm VBA có thể có câu lệnh trả về tùy chọn. Điều này là bắt buộc nếu bạn muốn trả về một giá trị từ một hàm.
Ví dụ, bạn có thể truyền hai số trong một hàm và sau đó bạn có thể mong đợi từ hàm trả về phép nhân của chúng trong chương trình gọi của bạn.
chú thích – Một hàm có thể trả về nhiều giá trị được phân tách bằng dấu phẩy dưới dạng một mảng được gán cho chính tên hàm.
Trước khi sử dụng một chức năng, chúng ta cần xác định chức năng cụ thể đó. Cách phổ biến nhất để xác định hàm trong VBA là sử dụng từ khóaHàm , theo sau là tên hàm duy nhất và nó có thể hoặc không mang danh sách các tham số và câu lệnh với từ khóa End Function , cho biết kết thúc hàm. Sau đây là cú pháp cơ bản.
Cú pháp
Thêm một nút và thêm chức năng sau.
Function Functionname(parameter-list)
statement 1
statement 2
statement 3
.......
statement n
End Function
Thí dụ
Thêm chức năng sau đây trả về khu vực. Lưu ý rằng một giá trị / giá trị có thể được trả về với chính tên hàm.
Function findArea(Length As Double, Optional Width As Variant)
If IsMissing(Width) Then
findArea = Length * Length
Else
findArea = Length * Width
End If
End Function
Gọi một chức năng
Để gọi hàm, hãy gọi hàm bằng tên hàm như trong ảnh chụp màn hình sau.
Đầu ra của khu vực như hình dưới đây sẽ được hiển thị cho người dùng.
VBA – Thủ tục phụ
Các thủ tục phụ tương tự như các chức năng, tuy nhiên có một vài khác biệt.
-
Các thủ tục phụ KHÔNG trả về giá trị trong khi các hàm có thể hoặc không thể trả về giá trị.
-
Thủ tục phụ CÓ THỂ được gọi mà không cần một từ khóa cuộc gọi.
-
Các thủ tục phụ luôn được đính kèm trong các câu lệnh Sub và End Sub.
Thí dụ
Sub Area(x As Double, y As Double)
MsgBox x * y
End Sub
Thủ tục gọi
Để gọi một Thủ tục ở đâu đó trong tập lệnh, bạn có thể thực hiện cuộc gọi từ một hàm. Chúng tôi sẽ không thể sử dụng cùng một cách như chức năng như thủ tục phụ S NOT KHÔNG trả về giá trị.
Function findArea(Length As Double, Width As Variant)
area Length, Width ' To Calculate Area 'area' sub proc is called
End Function
Bây giờ bạn sẽ chỉ có thể gọi hàm nhưng không phải là thủ tục phụ như trong ảnh chụp màn hình sau.
Khu vực được tính toán và chỉ hiển thị trong hộp Tin nhắn.
Ô kết quả hiển thị ZERO khi giá trị vùng KHÔNG được trả về từ hàm. Nói tóm lại, bạn không thể thực hiện cuộc gọi trực tiếp đến một thủ tục phụ từ bảng tính excel.
VBA – Sự kiện
VBA, một chương trình hướng sự kiện có thể được kích hoạt khi bạn thay đổi một ô hoặc phạm vi giá trị ô theo cách thủ công. Thay đổi sự kiện có thể giúp mọi việc dễ dàng hơn, nhưng bạn có thể nhanh chóng kết thúc một trang đầy định dạng.Có hai loại sự kiện.
- Sự kiện bảng tính
- Sự kiện Workbook
Sự kiện bảng tính
Sự kiện bảng tính được kích hoạt khi có sự thay đổi trong bảng tính. Nó được tạo bằng cách thực hiện nhấp chuột phải vào tab trang tính và chọn ‘xem mã’ và sau đó dán mã.
Người dùng có thể chọn từng một trong các bảng tính đó và chọn “WorkSheet” từ trình đơn thả xuống để lấy danh sách tất cả các sự kiện Bảng tính được hỗ trợ.
Sau đây là các sự kiện bảng tính được hỗ trợ mà người dùng có thể thêm vào.
Private Sub Worksheet_Activate()
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Private Sub Worksheet_Calculate()
Private Sub Worksheet_Change(ByVal Target As Range)
Private Sub Worksheet_Deactivate()
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Thí dụ
Hãy để chúng tôi nói, chúng tôi chỉ cần hiển thị một tin nhắn trước khi nhấp đúp chuột.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
MsgBox "Before Double Click"
End Sub
Đầu ra
Khi nhấp đúp vào bất kỳ ô nào, hộp thông báo sẽ được hiển thị cho người dùng như trong ảnh chụp màn hình sau.
Sự kiện Workbook
Các sự kiện sổ làm việc được kích hoạt khi có một sự thay đổi trong toàn bộ sổ làm việc. Chúng tôi có thể thêm mã cho các sự kiện sổ làm việc bằng cách chọn ‘ThisWorkbook’ và chọn ‘sổ làm việc’ từ danh sách thả xuống như trong ảnh chụp màn hình sau. Ngay lập tức thủ tục phụ Workbook_open được hiển thị cho người dùng như trong ảnh chụp màn hình sau đây.
Sau đây là các sự kiện Workbook được hỗ trợ mà người dùng có thể thêm vào.
Private Sub Workbook_AddinUninstall()
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Private Sub Workbook_Deactivate()
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Private Sub Workbook_Open()
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
Private Sub Workbook_WindowResize(ByVal Wn As Window)
Thí dụ
Giả sử, chúng ta chỉ cần hiển thị một thông báo cho người dùng rằng một trang tính mới được tạo thành công, bất cứ khi nào một trang tính mới được tạo.
Private Sub Workbook_NewSheet(ByVal Sh As Object)
MsgBox "New Sheet Created Successfully"
End Sub
Đầu ra
Khi tạo một bảng excel mới, một thông báo sẽ được hiển thị cho người dùng như trong ảnh chụp màn hình sau đây.
VBA – Xử lý lỗi
Có ba loại lỗi trong lập trình: (a) Lỗi cú pháp, (b) Lỗi thời gian chạy và (c) Lỗi logic.
Lỗi cú pháp
Lỗi cú pháp, còn được gọi là lỗi phân tích cú pháp, xảy ra tại thời điểm diễn giải cho VBScript. Ví dụ, dòng sau gây ra lỗi cú pháp vì nó thiếu dấu ngoặc đơn đóng.
Function ErrorHanlding_Demo()
dim x,y
x = "Tutorialspoint"
y = Ucase(x
End Function
Lỗi thời gian chạy
Lỗi thời gian chạy, còn được gọi là ngoại lệ, xảy ra trong khi thực hiện, sau khi giải thích.
Ví dụ, dòng sau gây ra lỗi thời gian chạy vì ở đây cú pháp đúng nhưng trong thời gian chạy, nó đang cố gọi fnmultiply, đây là một hàm không tồn tại.
Function ErrorHanlding_Demo1()
Dim x,y
x = 10
y = 20
z = fnadd(x,y)
a = fnmultiply(x,y)
End Function
Function fnadd(x,y)
fnadd = x + y
End Function
Lỗi logic
Lỗi logic có thể là loại lỗi khó theo dõi nhất.Những lỗi này không phải là kết quả của một cú pháp hoặc lỗi thời gian chạy. Thay vào đó, chúng xảy ra khi bạn mắc lỗi logic điều khiển tập lệnh của bạn và bạn không nhận được kết quả như mong đợi.
Bạn không thể bắt những lỗi đó, vì nó phụ thuộc vào yêu cầu kinh doanh của bạn về loại logic bạn muốn đưa vào chương trình của mình.
Ví dụ: chia một số cho 0 hoặc một tập lệnh được viết sẽ đi vào vòng lặp vô hạn.
Đối tượng Err
Giả sử nếu chúng ta có lỗi thời gian chạy, thì việc thực thi dừng lại bằng cách hiển thị thông báo lỗi.Là một nhà phát triển, nếu chúng ta muốn nắm bắt lỗi, sau đó Lỗi Object được sử dụng.
Thí dụ
Trong ví dụ sau, Err.Number đưa ra số lỗi vàErr.Des mô tả cho mô tả lỗi.
Err.Raise 6 ' Raise an overflow error.
MsgBox "Error # " & CStr(Err.Number) & " " & Err.Description
Err.Clear ' Clear the error.
Xử lý lỗi
VBA cho phép một thói quen xử lý lỗi và cũng có thể được sử dụng để vô hiệu hóa một thói quen xử lý lỗi. Nếu không có câu lệnh On Error, bất kỳ lỗi thời gian chạy nào xảy ra đều nghiêm trọng: một thông báo lỗi được hiển thị và việc thực thi dừng đột ngột.
On Error { GoTo [ line | 0 | -1 ] | Resume Next }
S.No. | Từ khóa & Mô tả |
---|---|
1 |
Đường dây GoTo
Cho phép thường trình xử lý lỗi bắt đầu tại dòng được chỉ định trong đối số dòng được yêu cầu. Dòng được chỉ định phải ở cùng quy trình với câu lệnh On Error, hoặc sẽ xảy ra lỗi thời gian biên dịch.
|
2 |
GoTo 0
Vô hiệu hóa trình xử lý lỗi được kích hoạt trong quy trình hiện tại và đặt lại thành Không có gì.
|
3 |
GoTo -1
Vô hiệu hóa ngoại lệ được kích hoạt trong quy trình hiện tại và đặt lại thành Không có gì.
|
4 |
Tiếp tục lại
Chỉ định rằng khi xảy ra lỗi trong thời gian chạy, điều khiển sẽ chuyển đến câu lệnh ngay sau câu lệnh xảy ra lỗi và việc thực thi tiếp tục từ thời điểm đó.
|
Thí dụ
Public Sub OnErrorDemo()
On Error GoTo ErrorHandler ' Enable error-handling routine.
Dim x, y, z As Integer
x = 50
y = 0
z = x / y ' Divide by ZERO Error Raises
ErrorHandler: ' Error-handling routine.
Select Case Err.Number ' Evaluate error number.
Case 10 ' Divide by zero error
MsgBox ("You attempted to divide by zero!")
Case Else
MsgBox "UNKNOWN ERROR - Error# " & Err.Number & " : " & Err.Description
End Select
Resume Next
End Sub
VBA – Đối tượng Excel
Khi lập trình bằng VBA, có một vài đối tượng quan trọng mà người dùng sẽ xử lý.
- Đối tượng ứng dụng
- Đối tượng sách bài tập
- Đối tượng trang tính
- Đối tượng phạm vi
Đối tượng ứng dụng
Đối tượng Ứng dụng bao gồm các mục sau –
- Các cài đặt và tùy chọn trên toàn ứng dụng.
- Các phương thức trả về các đối tượng cấp cao nhất, như ActiveCell, ActiveSheet, v.v.
Thí dụ
'Example 1 :
Set xlapp = CreateObject("Excel.Sheet")
xlapp.Application.Workbooks.Open "C:test.xls"
'Example 2 :
Application.Windows("test.xls").Activate
'Example 3:
Application.ActiveCell.Font.Bold = True
Đối tượng sách bài tập
Đối tượng Workbook là thành viên của bộ sưu tập Workbook và chứa tất cả các đối tượng Workbook hiện đang mở trong Microsoft Excel.
Thí dụ
'Ex 1 : To close Workbooks
Workbooks.Close
'Ex 2 : To Add an Empty Work Book
Workbooks.Add
'Ex 3: To Open a Workbook
Workbooks.Open FileName:="Test.xls", ReadOnly:=True
'Ex : 4 - To Activate WorkBooks
Workbooks("Test.xls").Worksheets("Sheet1").Activate
Đối tượng trang tính
Đối tượng Worksheet là một thành viên của bộ sưu tập Worksheet và chứa tất cả các đối tượng Worksheet trong một bảng tính.
Thí dụ
'Ex 1 : To make it Invisible
Worksheets(1).Visible = False
'Ex 2 : To protect an WorkSheet
Worksheets("Sheet1").Protect password:=strPassword, scenarios:=True
Đối tượng phạm vi
Phạm vi Đối tượng đại diện cho một ô, một hàng, một cột hoặc một lựa chọn các ô chứa một hoặc nhiều khối ô liên tục.
'Ex 1 : To Put a value in the cell A5
Worksheets("Sheet1").Range("A5").Value = "5235"
'Ex 2 : To put a value in range of Cells
Worksheets("Sheet1").Range("A1:A4").Value = 5
VBA – Tệp văn bản
Bạn cũng có thể đọc Tệp Excel và viết nội dung của ô vào Tệp văn bản bằng VBA. VBA cho phép người dùng làm việc với các tệp văn bản bằng hai phương pháp –
- Đối tượng hệ thống tệp
- sử dụng lệnh Write
Đối tượng hệ thống tệp (FSO)
Như tên cho thấy, các FSO giúp các nhà phát triển làm việc với các ổ đĩa, thư mục và tệp. Trong phần này, chúng tôi sẽ thảo luận về cách sử dụng FSO.
S.No. | Loại đối tượng và mô tả |
---|---|
1 |
Lái xe
Ổ đĩa là một đối tượng. Chứa các phương thức và thuộc tính cho phép bạn thu thập thông tin về một ổ đĩa được gắn vào hệ thống.
|
2 |
Ổ đĩa
Ổ đĩa là một Bộ sưu tập. Nó cung cấp một danh sách các ổ đĩa được gắn vào hệ thống, về mặt vật lý hoặc logic.
|
3 |
Tập tin
Tệp là một đối tượng. Nó chứa các phương thức và thuộc tính cho phép các nhà phát triển tạo, xóa hoặc di chuyển tệp.
|
4 |
Các tập tin
Tập tin là một Bộ sưu tập. Nó cung cấp một danh sách tất cả các tập tin có trong một thư mục.
|
5 |
Thư mục
Thư mục là một đối tượng. Nó cung cấp các phương thức và thuộc tính cho phép các nhà phát triển tạo, xóa hoặc di chuyển các thư mục.
|
6 |
Thư mục
Thư mục là một Bộ sưu tập. Nó cung cấp một danh sách tất cả các thư mục trong một thư mục.
|
7 |
TextStream
TextStream là một đối tượng. Nó cho phép các nhà phát triển đọc và viết các tệp văn bản.
|
Lái xe
Ổ đĩa là một đối tượng, cung cấp quyền truy cập vào các thuộc tính của một ổ đĩa cụ thể hoặc chia sẻ mạng. Các thuộc tính sau được hỗ trợ bởi đối tượng Drive –
- Không gian có sẵn
- Ký tự ổ đĩa
- Loại ổ
- Hệ thống tập tin
- Không gian trông
- Sẵn sàng
- Con đường
- Thư mục gốc
- Số sê-ri
- Tên chia sẻ
- Tổng kích thước
- VolumeName
Thí dụ
Bước 1 – Trước khi tiếp tục tập lệnh bằng FSO, chúng ta nên kích hoạt Microsoft Scripting Runtime. Để thực hiện tương tự, điều hướng đến Công cụ → Tài liệu tham khảo như trong ảnh chụp màn hình sau.
Bước 2 – Thêm “Microsoft Scripting RunTime” và bấm OK.
Bước 3 – Thêm dữ liệu mà bạn muốn ghi vào tệp văn bản và thêm nút lệnh.
Bước 4 – Bây giờ là lúc để Script.
Private Sub fn_write_to_text_Click()
Dim FilePath As String
Dim CellData As String
Dim LastCol As Long
Dim LastRow As Long
Dim fso As FileSystemObject
Set fso = New FileSystemObject
Dim stream As TextStream
LastCol = ActiveSheet.UsedRange.Columns.Count
LastRow = ActiveSheet.UsedRange.Rows.Count
' Create a TextStream.
Set stream = fso.OpenTextFile("D:TrySupport.log", ForWriting, True)
CellData = ""
For i = 1 To LastRow
For j = 1 To LastCol
CellData = Trim(ActiveCell(i, j).Value)
stream.WriteLine "The Value at location (" & i & "," & j & ")" & CellData
Next j
Next i
stream.Close
MsgBox ("Job Done")
End Sub
Đầu ra
Khi thực thi tập lệnh, đảm bảo rằng bạn đặt con trỏ vào ô đầu tiên của trang tính. Tệp Support.log được tạo như hiển thị trong ảnh chụp màn hình sau trong “D: Thử”.
Nội dung của tập tin được hiển thị trong ảnh chụp màn hình sau đây.
Viết lệnh
Không giống như FSO, chúng tôi KHÔNG cần thêm bất kỳ tài liệu tham khảo nào, tuy nhiên, chúng tôi sẽ KHÔNG thể làm việc với các ổ đĩa, tệp và thư mục. Chúng tôi sẽ có thể chỉ cần thêm luồng vào tệp văn bản.
Thí dụ
Private Sub fn_write_to_text_Click()
Dim FilePath As String
Dim CellData As String
Dim LastCol As Long
Dim LastRow As Long
LastCol = ActiveSheet.UsedRange.Columns.Count
LastRow = ActiveSheet.UsedRange.Rows.Count
FilePath = "D:Trywrite.txt"
Open FilePath For Output As #2
CellData = ""
For i = 1 To LastRow
For j = 1 To LastCol
CellData = "The Value at location (" & i & "," & j & ")" & Trim(ActiveCell(i, j).Value)
Write #2, CellData
Next j
Next i
Close #2
MsgBox ("Job Done")
End Sub
Đầu ra
Khi thực thi tập lệnh, tệp “write.txt” được tạo ở vị trí “D: Thử” như trong ảnh chụp màn hình sau.
Nội dung của tập tin được hiển thị trong ảnh chụp màn hình sau đây.
VBA – Biểu đồ lập trình
Sử dụng VBA, bạn có thể tạo biểu đồ dựa trên các tiêu chí nhất định. Chúng ta hãy xem xét nó bằng một ví dụ.
Bước 1 – Nhập dữ liệu mà biểu đồ phải được tạo.
Bước 2 – Tạo 3 nút – một nút để tạo biểu đồ thanh, một nút khác để tạo biểu đồ hình tròn và nút khác để tạo biểu đồ cột.
Bước 3 – Phát triển Macro để tạo từng loại biểu đồ này.
' Procedure to Generate Pie Chart
Private Sub fn_generate_pie_graph_Click()
Dim cht As ChartObject
For Each cht In Worksheets(1).ChartObjects
cht.Chart.Type = xlPie
Next cht
End Sub
' Procedure to Generate Bar Graph
Private Sub fn_Generate_Bar_Graph_Click()
Dim cht As ChartObject
For Each cht In Worksheets(1).ChartObjects
cht.Chart.Type = xlBar
Next cht
End Sub
' Procedure to Generate Column Graph
Private Sub fn_generate_column_graph_Click()
Dim cht As ChartObject
For Each cht In Worksheets(1).ChartObjects
cht.Chart.Type = xlColumn
Next cht
End Sub
Bước 4 – Khi nhấp vào nút tương ứng, biểu đồ được tạo. Trong đầu ra sau đây, nhấp vào nút Tạo biểu đồ hình tròn.
VBA – Biểu mẫu người dùng
Một Form là một hộp thoại tùy chỉnh được xây dựng mà làm cho một mục dữ liệu người dùng kiểm soát hơn và dễ dàng hơn để sử dụng cho người dùng. Trong chương này, bạn sẽ học cách thiết kế một biểu mẫu đơn giản và thêm dữ liệu vào excel.
Bước 1 – Điều hướng đến Cửa sổ VBA bằng cách nhấn Alt + F11 và Điều hướng đến Menu “Chèn” và chọn “Biểu mẫu người dùng”. Khi chọn, biểu mẫu người dùng được hiển thị như trong ảnh chụp màn hình sau.
Bước 2 – Thiết kế các biểu mẫu bằng các điều khiển đã cho.
Bước 3 – Sau khi thêm từng điều khiển, các điều khiển phải được đặt tên. Chú thích tương ứng với những gì xuất hiện trên biểu mẫu và tên tương ứng với tên logic sẽ xuất hiện khi bạn viết mã VBA cho phần tử đó.
Bước 4 – Sau đây là các tên đối với từng điều khiển được thêm vào.
Điều khiển | Tên logic | Chú thích |
---|---|---|
Từ | frmempform | Mẫu nhân viên |
Hộp nhãn nhân viên | đoàn kết | Mã hiệu công nhân |
hộp nhãn tên | tên đầu tiên | Tên đầu tiên |
hộp nhãn | họ | Họ |
hộp nhãn dob | dob | Ngày sinh |
hộp thư | tài khoản mail | ID email |
Hộp đựng hộ chiếu | Người nắm hộ chiếu | Người nắm hộ chiếu |
Hộp văn bản Emp ID | txtempid | KHÔNG áp dụng |
Tên văn bản hộp | tên đầu tiên | KHÔNG áp dụng |
Họ | tên txtlast | KHÔNG áp dụng |
Hộp văn bản ID email | txtemailid | KHÔNG áp dụng |
Hộp Combo ngày | cmbdate | KHÔNG áp dụng |
Hộp Combo tháng | cmbmonth | KHÔNG áp dụng |
Hộp Combo năm | cmbyear | KHÔNG áp dụng |
Có nút radio | radioyes | Vâng |
Không có nút radio | radiono | Không |
Nút gửi | btnsubmit | Gửi đi |
Nút hủy | btncattery | Hủy bỏ |
Bước 5 – Thêm mã cho sự kiện tải biểu mẫu bằng cách nhấp chuột phải vào biểu mẫu và chọn ‘Xem mã’.
Bước 6 – Chọn ‘Biểu mẫu người dùng’ từ trình đơn thả xuống của đối tượng và chọn phương thức ‘Khởi tạo’ như trong ảnh chụp màn hình sau.
Bước 7 – Khi Tải biểu mẫu, đảm bảo rằng các hộp văn bản bị xóa, hộp thả xuống được lấp đầy và các nút Radio được đặt lại.
Private Sub UserForm_Initialize()
'Empty Emp ID Text box and Set the Cursor
txtempid.Value = ""
txtempid.SetFocus
'Empty all other text box fields
txtfirstname.Value = ""
txtlastname.Value = ""
txtemailid.Value = ""
'Clear All Date of Birth Related Fields
cmbdate.Clear
cmbmonth.Clear
cmbyear.Clear
'Fill Date Drop Down box - Takes 1 to 31
With cmbdate
.AddItem "1"
.AddItem "2"
.AddItem "3"
.AddItem "4"
.AddItem "5"
.AddItem "6"
.AddItem "7"
.AddItem "8"
.AddItem "9"
.AddItem "10"
.AddItem "11"
.AddItem "12"
.AddItem "13"
.AddItem "14"
.AddItem "15"
.AddItem "16"
.AddItem "17"
.AddItem "18"
.AddItem "19"
.AddItem "20"
.AddItem "21"
.AddItem "22"
.AddItem "23"
.AddItem "24"
.AddItem "25"
.AddItem "26"
.AddItem "27"
.AddItem "28"
.AddItem "29"
.AddItem "30"
.AddItem "31"
End With
'Fill Month Drop Down box - Takes Jan to Dec
With cmbmonth
.AddItem "JAN"
.AddItem "FEB"
.AddItem "MAR"
.AddItem "APR"
.AddItem "MAY"
.AddItem "JUN"
.AddItem "JUL"
.AddItem "AUG"
.AddItem "SEP"
.AddItem "OCT"
.AddItem "NOV"
.AddItem "DEC"
End With
'Fill Year Drop Down box - Takes 1980 to 2014
With cmbyear
.AddItem "1980"
.AddItem "1981"
.AddItem "1982"
.AddItem "1983"
.AddItem "1984"
.AddItem "1985"
.AddItem "1986"
.AddItem "1987"
.AddItem "1988"
.AddItem "1989"
.AddItem "1990"
.AddItem "1991"
.AddItem "1992"
.AddItem "1993"
.AddItem "1994"
.AddItem "1995"
.AddItem "1996"
.AddItem "1997"
.AddItem "1998"
.AddItem "1999"
.AddItem "2000"
.AddItem "2001"
.AddItem "2002"
.AddItem "2003"
.AddItem "2004"
.AddItem "2005"
.AddItem "2006"
.AddItem "2007"
.AddItem "2008"
.AddItem "2009"
.AddItem "2010"
.AddItem "2011"
.AddItem "2012"
.AddItem "2013"
.AddItem "2014"
End With
'Reset Radio Button. Set it to False when form loads.
radioyes.Value = False
radiono.Value = False
End Sub
Bước 8 – Bây giờ thêm mã vào nút Gửi. Khi nhấp vào nút gửi, người dùng sẽ có thể thêm các giá trị vào bảng tính.
Private Sub btnsubmit_Click()
Dim emptyRow As Long
'Make Sheet1 active
Sheet1.Activate
'Determine emptyRow
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1
'Transfer information
Cells(emptyRow, 1).Value = txtempid.Value
Cells(emptyRow, 2).Value = txtfirstname.Value
Cells(emptyRow, 3).Value = txtlastname.Value
Cells(emptyRow, 4).Value = cmbdate.Value & "/" & cmbmonth.Value & "/" & cmbyear.Value
Cells(emptyRow, 5).Value = txtemailid.Value
If radioyes.Value = True Then
Cells(emptyRow, 6).Value = "Yes"
Else
Cells(emptyRow, 6).Value = "No"
End If
End Sub
Bước 9 – Thêm một phương thức để đóng biểu mẫu khi người dùng nhấp vào nút Hủy.
Private Sub btncancel_Click()
Unload Me
End Sub
Bước 10 – Thực hiện biểu mẫu bằng cách nhấp vào nút “Chạy”. Nhập các giá trị vào biểu mẫu và nhấp vào nút ‘Gửi’. Tự động các giá trị sẽ chảy vào bảng tính như trong ảnh chụp màn hình sau.
Tuyển tập những tài liệu hay nhất về lập trình VBA Macro trên Excel tải về free dành cho các bạn.
?DienDan.Edu.Vn cám ơn bạn đã quan tâm và rất vui vì bài viết đã đem lại thông tin hữu ích cho bạn. https://diendan.edu.vn/
?Các bạn tham khảo hướng dẫn tải file trên Quản Trị Excel tại đây: http://www.quantriexcel.info/2018/11/huong-dan-tai-file-tren-quan-tri-excel.html
DienDan.Edu.Vn Cám ơn bạn đã quan tâm và rất vui vì bài viết đã đem lại thông tin hữu ích cho bạn.DienDan.Edu.Vn! là một website với tiêu chí chia sẻ thông tin,... Bạn có thể nhận xét, bổ sung hay yêu cầu hướng dẫn liên quan đến bài viết. Vậy nên đề nghị các bạn cũng không quảng cáo trong comment này ngoại trừ trong chính phần tên của bạn.Cám ơn.