2012-01-13 44 views
6

Tôi muốn hiển thị hộp thoại sau khi người dùng nhấp vào một ô trong trang tính Excel. Something như thế này:Thoát/tắt chế độ chỉnh sửa sau khi nhấp đúp vào sự kiện được xử lý

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 
    MsgBox "a cell was clicked!", vbOKOnly, "a click" 
End Sub 

Nó hoạt động hoàn toàn tốt đẹp. Vấn đề là, sau khi chế độ chỉnh sửa nhấp đúp được bật và công thức dự kiến ​​sẽ được nhập. Làm cách nào để tắt hành vi này?

Tôi muốn để đạt được chức năng tinh khiết: ~ người dùng nhấp vào một tế bào ~ một hộp thoại xuất hiện ~ dùng đóng hộp thoại ~ một tế bào không đi vào chế độ chỉnh sửa, bảng trông giống hệt như nó đã làm trước khi tăng gấp đôi bấm vào sự kiện.

Trả lời

13

Bạn phải hủy bỏ hành động với biến được đưa ra trong luận:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 
    MsgBox "a cell was clicked!", vbOKOnly, "a click" 
    'Disable standard behavior  
    Cancel = True 
End Sub 

Dưới đây là một ví dụ giả:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 
Dim response As Variant 
response = MsgBox("Are you sure you want to edit the cell?", vbYesNo, "Check") 
If response = vbYes Then 
    Cancel = False 
Else 
    Cancel = True 
End If 
End Sub 

Lưu ý rằng bạn sẽ không phải thiết Cancel để False vì nó là giá trị mặc định (điều này là dành cho mục đích ví dụ).

Các vấn đề liên quan