获取用户选择的范围

Tal*_*guy 34 excel vba excel-2003 excel-vba

如何通过用户鼠标输入选择一系列单元格以便使用VBA进行进一步处理?

Mic*_*ael 35

Selection是VBA中自己的对象.它的功能很像一个Range物体.

但是,Selection和Range不共享所有相同的属性和方法,因此为了便于使用,创建一个范围并将其设置为与Selection相同可能是有意义的,然后您可以像其他任何范围一样以编程方式处理它.

Dim myRange as Range
Set myRange = Selection
Run Code Online (Sandbox Code Playgroud)

有关进一步阅读,请查看MSDN文章.

  • 虽然 selection 是 Range 类型,但它缺少什么道具和方法?无论如何,我总是将它直接转换为 Range 类型,但只是感兴趣。 (2认同)

Miy*_*der 29

您可以遍历Selection对象以查看所选内容.以下是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
Run Code Online (Sandbox Code Playgroud)

  • 他刚刚发布了一个关于如何使用选择对象的例子.我在我的代码中使用count属性 (3认同)

Pet*_*jko 13

这取决于"获得选择范围"的含义.如果你的意思是获取范围地址(如"A1:B1"),那么使用Selection对象的Address属性 - 正如迈克尔所说,Selection对象很像Range对象,因此大多数属性和方法都适用于它.

Sub test()
    Dim myString As String
    myString = Selection.Address
End Sub
Run Code Online (Sandbox Code Playgroud)

  • 我更喜欢 .Address(0, 0),因为它返回不带 $ 符号的地址。在使用 vba 工作时这是更好的选择。 (2认同)