Dưới đây là bí kíp làm cách nào để macro ngừng hoạt động tạm thời sao cho người dùng có thể lựa chọn được dải ô trong Excel. Mẹo nhỏ ở đây là sử dụng hàm InputBox trong mục Application.
Lưu ý: Bạn không nên nhầm lẫn với hàm InputBox của VBA. Tuy có cùng tên gọi nhưng bản chất đây là 2 hàm khác nhau.
Lệnh Sub dưới đây sẽ cho phép người dùng tạm thời ngừng hoạt động của macro để lựa chọn dải ô.
Sub GetUserRange()
Dim UserRange As Range
Output = 565
Prompt = “Select a cell for the output.”
Title = “Select a cell”
‘ Display the Input Box
On Error Resume Next
Set UserRange = Application.InputBox( _
Prompt:=Prompt, _
Title:=Title, _
Default:=ActiveCell.Address, _
Type:=8) ‘Range selection
‘ Was the Input Box canceled?
If UserRange Is Nothing Then
MsgBox “Canceled.”
Else
UserRange.Range(“A1”) = Output
End If
End Sub
Hộp thoại điền thông tin sẽ có dạng như sau:
Mấu chốt thành công của câu lệnh này chính là việc tùy chỉnh tính năng “Type” được đặt ở giá trị là 8. Ngoài ra bạn cũng nên lưu ý thêm về cách sử dụng câu lệnh “On Error Resume Next”. Lệnh này sẽ tự động lờ đi lỗi gặp phải nếu như người dùng click vào lựa chọn “Cancel”. Khi đó, tính năng “UserRange” sẽ không được kích hoạt. Sau đó thông báo sẽ hiện lên với dòng chữ “Canceled”. Chỉ khi người dùng click vào lựa chọn “OK”, macro mới tiếp tục hoạt động trở lại.
Một lưu ý nữa, bạn không cần phải quá bận tâm về chiều dài dải ô bao nhiêu thì hợp lý. Excel sẽ tự tính toán thay cho bạn.
Cảnh báo: Hãy đảm bảo bạn đã bật tính năng “ScreenUpdating” lên. Nếu không bạn sẽ không thể chọn được bất kỳ ô tính nào cả.