Các Lệnh Logic điều Khiển Trong VBA

Menu Tự học VBA
  • Trang chủ
  • Diễn đàn Bài viết mới Tìm chủ đề
  • Có gì mới Bài viết mới Hoạt động mới nhất
Đăng nhập Đăng ký Có gì mới? Tìm kiếm

Tìm kiếm

Everywhere Chủ đề This forum This thread Chỉ tìm trong tiêu đề Bởi: Tìm Tìm kiếm nâng cao…
  • Bài viết mới
  • Tìm chủ đề
Menu Đăng nhập Đăng ký
  • Cách upload ảnh lên diễn đàn
  • Trang chủ
  • Diễn đàn
  • Kỹ thuật xử lý Excel
  • Lập trình VBA
Các lệnh logic điều khiển trong VBA
  • Thread starter tuhocvba
  • Ngày gửi 23/6/19
tuhocvba

tuhocvba

Administrator
Thành viên BQT 1. Lệnh GoTo Lệnh GoTo là chỉ thị điều khiển nhảy tới thực thi một dòng lệnh, bỏ qua các lệnh ở sau GoTo. GoTo tuhocvba '<= nhảy tới đoạn code có nhãn tuhocvba  Xử lý thực thi.... ' <= Đoạn code này sẽ không được thực thi tuhocvba:  Xử lý thực thi.... ' <= đoạn code sẽ được thực thi Mã: Sub sample() MsgBox "01: tuhocvba.net" MsgBox "02: tuhocvba.net" GoTo tuhocvba MsgBox "03: tuhocvba.net" MsgBox "04: tuhocvba.net" tuhocvba: MsgBox "05: tuhocvba.net" End Sub Kết quả: Bạn cần đăng nhập để thấy hình ảnh Nguồn tham khảo: Bạn cần đăng nhập để thấy link vbano1

vbano1

SMod
Thành viên BQT 2. Lệnh If~then Cấu trúc: Mã: If Điều_Kiện Then  Điều_Kiện thỏa mãn thì tiến hành xử lý 1 Else  Điều_Kiện không thỏa mãn thì tiến hành xử lý 2 End If Trong một số trường hợp ta còn gặp cấu trúc như sau: Ví dụ: Mã: if (a=2) then x = x+1 else x = x-1 End if Mã: If DK1 Then  DK1 thỏa mãn thì xử lý 1 ElseIf DK2 Then  DK2 thỏa mãn thì xử lý 2 ・・・ Else  Tất cả các trường hợp trên không thỏa mãn thì tiến hành xử lý... End If Chú ý, với đối tượng ta có logic is Ví dụ: Mã: Sub sample() Dim a As Object Dim b As Object Set a = Sheets("Sheet1") Set b = Sheets("Sheet1") If a Is b Then MsgBox "a va b giong nhau" Else MsgBox "a va b khong giong nhau" End If End Sub giaiphapvba

giaiphapvba

Administrator
Thành viên BQT 3. Lệnh GoSub: Mã: Sub Sample() Dim a As Integer a = InputBox("Hay nhap so vao") 'Hiện cửa sổ để người dùng nhập số. Chả hạn ta nhập vào là 1 If a < 10 Then GoSub Sub1 'Chạy tới vị trí Sub1 để thực thi nếu a < 10. Vì ta nhập a = 1 nên nó sẽ chạy tới Sub1 MsgBox a Exit Sub Sub1: a = a + 10 'Vì nhập vào a = 1 ở trên. nên lúc này a = a + 10 = 11. Return 'Nó sẽ quay lại vị trí dòng lệnh GoSub Sub1 ở trên. Do a = 11 nên a > 10. Vì thế lệnh Msgbox a được thực thi. End Sub Lệnh này khá giống với Bạn cần đăng nhập để thấy link , giúp chúng ta tránh lỗi (vị trí có thể xảy ra lỗi mà chúng ta phán đoán được. Trở lại với chương trình trên khi chúng ta nhập vào là 1. Tôi đã giải thích bằng comment trong đoạn code trên. Kết quả: Bạn cần đăng nhập để thấy đính kèm Nguồn: Bạn cần đăng nhập để thấy link Sửa lần cuối: 8/8/19 tuhocvba

tuhocvba

Administrator
Thành viên BQT 4. Select Case: Liệt kê các trường hợp có thể xảy ra Select Case Đối tượng mà ta muốn làm việc  Case Điều kiện 1   Điều kiện 1 mà đúng thì thực thi lệnh...  Case Điều kiện 2   Điều kiện 2 mà đúng thì thực thi lệnh... ・・・  Case Else   Tất cả các điều kiện trên đều không đúng thì thực thi lệnh... End Select Ví dụ: Mã: Sub sample() Dim a As Integer a = 10 Select Case a Case 9 MsgBox "a la 9" Case 10 MsgBox "a la 10" Case Else MsgBox "a khong phai la 9 va 10" End Select End Sub Kết quả: Bạn cần đăng nhập để thấy đính kèm Liệt kê như trên là hay gặp nhất. Ta cũng có thể dùng To để vắn tắt như sau: Mã: Sub sample() Dim a As Integer a = 10 Select Case a Case 1 To 5 MsgBox "a nam trong khoang 1~5" Case 6 To 10 MsgBox "a nam trong khoang 6~10" Case 11 To 15 MsgBox "a nam trong khoang 11~15" Case Else MsgBox "a >= 16" End Select End Sub Và ta cũng có thể dùng Is để liệt kê như sau: Mã: Sub sample() Dim a As Integer a = 10 Select Case a Case Is >= 15 MsgBox "a>=15" Case Is >= 10 MsgBox "a nam trong khoang 14~10" Case Is >= 5 MsgBox "a nam trong khoang 9~5" Case Else MsgBox "a < = 4" End Select End Sub Các liệt kê sau đây có lẽ là dễ nhớ hơn hai cách vừa nêu: Mã: Sub sample() Dim a As Integer a = 10 Select Case a Case 0, 2, 4, 6, 8, 10 MsgBox "a la so chan" Case 1, 3, 5, 7, 9, 11 MsgBox "a la so le" End Select End Sub Các bạn nắm được logic của nó là được, thực tế khi code có thể quên cú pháp, bạn có thể google từ khóa "VBA select case" là lập tức sẽ ra trang tham khảo. Vì vậy đừng lo lắng quá nhé. Bài viết được diễn đàn tham khảo từ: Bạn cần đăng nhập để thấy link Euler

Euler

Administrator
Thành viên BQT 5. For~Next Cấu trúc: For số_đếm = giá_trị_ban_đầu To giá_trị_giới_hạn  Lệnh bên trong vòng lặp Next số_đếm Trong trường hợp này, bước nhảy mặc định hiểu là 1 nếu bạn không nói gì. Một cách chính quy, nên viết như sau: For số_đếm = giá_trị_ban_đầu To giá_trị_giới_hạn Step bước_nhảy  Lệnh bên trong vòng lặp Next số_đếm Chúng ta có code sau: Mã: Sub sample() Dim i As Integer For i = 1 To 3 MsgBox "Vong lap thu: " & i Next i End Sub Kết quả là: Bạn cần đăng nhập để thấy đính kèm Diễn giải: Ở code trên không nhắc gì tới bước nhảy (step) cho nên VBA mặc định hiểu bước nhảy là 1 (step 1). Ban đầu i = 1 và nó đưa ra kết quả là hộp thoại 1. Tiếp tục i tăng lên 1 đơn vị (step 1) nên i = 2. Nó ra tiếp hộp thoại 2. Tiếp tục i tăng lên 1 đơn vị (step 1) nên i = 3. Nó ra tiếp hộp thoại 3. Tiếp tục i tăng lên 1 đơn vị (step 1) nên i = 4, lúc này i > giới hạn (=3) cho nên câu lệnh bên trong for không được thực thi, vòng lặp kết thúc. Về logic của For ~ Next thì diễn đàn đã có video thuyết minh rồi, các bạn xem thêm ở đây: Bạn cần đăng nhập để thấy đa phương tiện tuhocvba

tuhocvba

Administrator
Thành viên BQT 6. For Each ~ Next Cấu trúc: For Each element In group [Xử lý...] [Exit For] Next [element] Group ở đây là một nhóm các đối tượng hoặc là tập hợp các phần tử của một mảng Ví dụ: Mã: Sub sample() Dim st As Object For Each st In Sheets MsgBox st.Name Next End Sub Kết quả: Bạn cần đăng nhập để thấy đính kèm Bạn cần đăng nhập để thấy đính kèm st ở trên ta khai báo là đối tượng ( Object). sheets ở đây là tập hợp tất cả các sheet có trong file. Bây giờ ta có ví dụ với mảng: Mã: Sub sample() Dim arrayData As Variant Dim i As Variant 'Mảng arrayData = Array(1, 3, 5) For Each i In arrayData msgbox i Next i End Sub Kết quả: Bạn cần đăng nhập để thấy đính kèm Mảng ta khai báo là Variant cho nên i trong chương trình cũng được khai báo là Variant. Nguồn tham khảo: Bạn cần đăng nhập để thấy link Bạn phải đăng nhập hoặc đăng ký để bình luận. Chia sẻ: Facebook Twitter WhatsApp Email Link
  • Trang chủ
  • Diễn đàn
  • Kỹ thuật xử lý Excel
  • Lập trình VBA
Top

Từ khóa » Cấu Trúc Lệnh Trong Vba