Tiếp đó chọn dòng cuối;
Chọn mục WorkSheet tại CS bên trái;
Chọn mục BeforeDoublick ở CS bên fải
nhật vô đó 2 dòng lệnh:
1 MsgBox "No Day Roi!"
2 XXXYYYZZZ 'XXXYYYZZZ là tên Macro mà bạn muốn chạy khi nhấn đúp 1 ô
Cụ thể:
Mã:
[b]Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) [/b]
1 MsgBox "No Day Roi!"
2 XXXYYYZZZ
[b]End Sub[/b]
Anh SA_DQ cho em hỏi
Tại sao phải khai báo Cancel as boolean và áp dụng nó trong trường hợp nào?
Em thấy tất một số file trên 4R có sử dụng nhưng em không thể hiểu được?
Nhờ anh giải thích giúp.
Cám ơn Anh!
Anh cho em hỏi
Tại sao phải khai báo Cancel as boolean và áp dụng nó trong trường hợp nào?
Em thấy tất một số file trên 4R có sử dụng nhưng em không thể hiểu được?
1: Bạn vô ô tìm kiếm của diễn đàn này hay ~ diễn đàn tương tự & nhập 'DoubleClick' thử xem có bài nào cho bạn rõ hơn chăng;
2: /)/ếu chưa thõa mãn nên vô hỏi BG
Riêng mình thấy cái này là từ trên trời rơi xuống!
Anh SA_DQ cho em hỏi
Tại sao phải khai báo Cancel as boolean và áp dụng nó trong trường hợp nào?
Em thấy tất một số file trên 4R có sử dụng nhưng em không thể hiểu được?
Nhờ anh giải thích giúp.
Cám ơn Anh!
Cancel là biến để chỉ tình trạng của chuột khi bấm đôi. Nó là biến có 2 giá trị FALSE hoặc TRUE:
FALSE: ngầm định. Excel quy định khi bấm đôi chuột vào ô thì sẽ đưa con trỏ vào vị trí bấn chuột để chỉnh sửa nội dung.
TRUE: làm mất tác dụng của bấm đội.
Ví dụ dưới dây giúp bạn hiểu ý nghĩa của Cancel.
Khi bấm đôi chuột, nó sẽ kiểm tra ô mà chuột đang trỏ vào có dữ liệu không.
- Nếu có, không cho con trỏ đặt vào ô (tránh chỉnh sửa nội dung).
- Nếu không, đưa con trỏ vào vị trí bấm chuột để chỉnh sửa nội dung
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If ActiveCell.Value <> "" Then
Cancel = True
End If
End Sub
Vì ngầm định Cancel=FALSE nên không cần phải viết:
If ActiveCell.Value <> "" Then
Cancel = True
Else
Cancel=False
End If
Dear all,
--------
Cũng phải nói thêm rằng, các biến trong các thủ tục sự kiện là "biến hệ thống", nghĩa là biến do hệ thống quản lý và điều khiển.
Cũng cú pháp khai báo như vậy, biến Cancel sau đây không giống như Cancel trong Private Sub Workbook_BeforeClose(Cancel As Boolean):
Mã:
Sub MyBook_Close(Cancel as Boolean)
If MsgBox("Do you want to exit?", vbYesNo + vbQuestion) = vbNo Then Cancel = True
End Sub
vì đơn giản MyBook_Close không phải là thủ tục sự kiện - không phải thủ tục mà do hệ thống quản lý. Thế nào là thủ tục sự kiện?
Chúng ta hiểu các "sự kiện" như là các phương thức của một lớp đối tượng đã được lập trình sẵn. Chẳng hạn, lớp đối tượng Worksheet có các sự kiện cơ bản sau:
- Activate
- BeforeDoubleClick
- BeforeRightClick
- Calculate
- Change
- Deactivate
- FollowHyperlink
- PivotTableUpdate
- SelectionChange
Tương ứng với mỗi sự kiện đó là một thủ tực sự kiện (tên thủ tục là kết hợp <Tên đối tượng>_<Tên sự kiện> bởi dấu _). Đặc biệt các khai báo thủ tục là do hệ thống phát sinh, người lập trình không được thay đổi cú pháp cũng như tất cả những khai báo đó.
Để hiểu rõ hơn về cách mà hệ thống quản lý các biến trong thủ tục sự kiện như thế nào, hãy so sánh thủ tục MyBook_Close nêu trên với thủ tục Private Sub Workbook_BeforeClose(Cancel As Boolean) với cùng một dòng lệnh như nhau:
Mã:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If MsgBox("Do you want to exit?", vbYesNo + vbQuestion) = vbNo Then Cancel = True
End Sub
Hiểu được các sự kiện và "cơ chế vận hành" của nó là một thuận lợi trong lập trình VBA!