Nhờ giải nghĩa đoạn code VBA

Liên hệ QC

Đỗ Đức Tuấn

Thành viên mới
Tham gia
14/4/18
Bài viết
12
Được thích
1
Giới tính
Nam
Chào cả nhà.

Em đang có 1 đoạn code của của 1 người bạn viết như phía dưới,

Em đọc và tìm hiểu trên mạng nhưng không hiểu đc ý nghĩa của

(ByVal Cancel As MSForms.ReturnBoolean): có ý nghĩa như thế nào trong VBA.

Vậy xin nhờ anh em chỉ giáo.

Cảm ơn cả nhà


Private Sub End_date_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsDate(End_date.Text) Then
End_date.BackColor = &HFF& ' change the color of the textbox
MsgBox "Illegal date value"
' setting Cancel to True means the user cannot leave this textbox
' until the value is in the proper date format
Cancel = True
Else
End_date.BackColor = &H80000005 ' change color of the textbox
End If
End Sub
 
Theo mình hiểu thì đây là một kiểu khai báo logic kiểu Boolean nghĩa là tác động lên hộp thoại này xảy ra sẽ trả về giá trị true false .ở đây là nếu tắt hộp thoại thì nó sẽ dựa vào ngày mà bạn nhập nếu như đúng và định dạng ngày thì mới cho tắt hộp thoại textbox này Cancel = True
Bài đã được tự động gộp:

1603855271922.png
nó gần như vầy
 
Upvote 0
Theo mình hiểu thì đây là một kiểu khai báo logic kiểu Boolean nghĩa là tác động lên hộp thoại này xảy ra sẽ trả về giá trị true false .ở đây là nếu tắt hộp thoại thì nó sẽ dựa vào ngày mà bạn nhập nếu như đúng và định dạng ngày thì mới cho tắt hộp thoại textbox này Cancel = True
nó gần như vầy
Không phải tác động lên hộp thoại, mà tuỳ theo sự kiện của controls sẽ có tham số Cancel hay không. Tham số này dùng để kiểm soát dữ liệu nhập cho controls: nếu đúng thì cho qua, nếu không đúng và muốn buộc người dùng phải nhập lại tại đúng controls đó thì gán Cancel = True để không cho chạy sự kiện (x).
Các sự kiện có tham số Cancel là Exit và BeforeUpdate, Đọc tên sự kiện là biết rằng khi ra khỏi hoặc trước khi cập nhật giá trị cho controls thì thực hiện code sự kiện. Muốn cho qua thì Cancel = False (mặc định), không cho qua thì gán Cancel = True
Code trong sự kiện có thể có Msgbox hoặc không tuỳ vào người viết, và muốn ngăn cản hay không cũng là tuỳ người viết
 
Upvote 0
Cảm ơn các bác đã hỗ trợ,

Nói thật em vẫn mông lung quá
Tôi tạm gọi sự kiện đó trên TextBox đi, khi con trỏ đang ở TextBox này và bạn muốn đặt con trỏ ở một control khác thì sự kiện này xuất hiện. Nếu bạn muốn tận dụng sự kiện này để bẫy lỗi thì bạn xác định xem nội dung trong TextBox đã thỏa điền kiện hay chưa, nếu chưa thì bạn không cho phép con trỏ đặt sang một control khác bằng cách đặt câu lệnh Cancel = True, nó sẽ ngăn không cho con trỏ dịch chuyển.
 
Upvote 0
Trên 1 userform, khi 1 control có dạng textbox hoặc combobox đang được focus mà bị dời focus sang control khác (enter, tab hoặc click chuột vào control khác) sẽ có 2 trường hợp:
- Textbox có thay đổi nội dung: Xảy ra 3 sự kiện theo tuần tự BeforeUpdate, AfterUpdate và Exit
- textbox không thay đổi nội dung kể cả nội dung trống: Chỉ xảy ra 1 sự kiện Exit
Code kiểm tra cho 1 Form có 1 textbox và 1 command button:
PHP:
Dim Seq As String
'______'
Private Sub CommandButton1_Click()
MsgBox Seq
Seq = ""
End Sub
'_________'
Private Sub TextBox1_AfterUpdate()
Seq = Seq & "AfterUpdate, "
End Sub
'________'
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Seq = Seq & "BeforeUpdate, "
End Sub

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Seq = Seq & "Exit, "
End Sub
1603862911081.png
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom