2010-11-02 31 views
22

Làm cách nào tôi có thể nhận được một dải ô được chọn qua đầu vào chuột của người dùng để xử lý thêm bằng VBA?Lấy Phạm vi đã Chọn của Người dùng

+0

Ghi macro, thực hiện tác vụ, dừng macro và sau đó xem mã được tạo. – Sarfraz

+1

Đã cố gắng nhưng điều đó tạo ra một phạm vi được xác định trước. Tôi muốn có một phạm vi sẽ thay đổi mỗi lần. – Talguy

+1

Đó là vì bạn đã "Sử dụng tham chiếu tương đối" bị vô hiệu hóa (trong tab Nhà phát triển trong nhóm Mã). Như câu trả lời dưới đây đề cập đến, đó là đối tượng Selection (là một cá thể Range) sẽ được ghi lại. –

Trả lời

19

Bạn có thể lặp qua đối tượng Chọn để xem những gì đã được chọn. Dưới đây là một đoạn mã từ Microsoft (http://msdn.microsoft.com/en-us/library/aa203726(office.11).aspx):

Sub Count_Selection() 
    Dim cell As Object 
    Dim count As Integer 
    count = 0 
    For Each cell In Selection 
     count = count + 1 
    Next cell 
    MsgBox count & " item(s) selected" 
End Sub 
+1

Thankyou. Đó là những gì tôi cần – Talguy

+0

Không nên lựa chọn.Count đủ? Tôi nghĩ thuộc tính Count có sẵn trên đối tượng Selection. Lặp qua toàn bộ vùng chọn có vẻ như là một chi phí. –

+3

Anh ta vừa đăng một exampel về cách sử dụng đối tượng lựa chọn. Tôi sử dụng thuộc tính đếm trong mã của tôi – Talguy

26

Selection là đối tượng riêng của mình trong VBA. Nó hoạt động giống như một đối tượng Range.

Lựa chọn và phạm vi không chia sẻ tất cả các thuộc tính và phương pháp giống nhau, do đó, để dễ sử dụng, bạn chỉ cần tạo một phạm vi và đặt bằng với lựa chọn, sau đó bạn có thể xử lý nó theo cách lập trình phạm vi khác.

Dim myRange as Range 
Set myRange = Selection 

Để đọc thêm, hãy xem MSDN article.

+1

Trong khi lựa chọn là loại Phạm vi, những gì đạo cụ và phương pháp là nó mất tích? Tôi luôn luôn đúc nó thẳng đến loại dù sao nhưng chỉ quan tâm. –

8

Điều này tùy thuộc vào ý bạn bằng cách "nhận phạm vi lựa chọn". Nếu bạn muốn nhập dải địa chỉ vào địa chỉ (như "A1: B1") thì sử dụng thuộc tính Address của đối tượng Selection - như Michael đã nói đối tượng Selection giống như đối tượng Range, vì vậy hầu hết các thuộc tính và phương thức đều hoạt động trên nó.

Sub test() 
    Dim myString As String 
    myString = Selection.Address 
End Sub 
Các vấn đề liên quan