25/05/2018, 23:10

Cách tạm thời ngừng hoạt động của macro để chọn dải ô

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 ...

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:

Hộp thoại điền thông tin

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ả.

0