2010-09-10 24 views
7

Ce n'est pas le problème usedrange.
Par exemple, dans l'utilisateur Excel sélectionne une plage (éventuellement vide) en utilisant la souris, disons B4: C12Excel VBA obtenir plage de la plage sélectionnée par l'utilisateur par la souris

Et disons après cela sans décochant l'utilisateur plage appuie sur la macro et macro devrait dire B4: C12.

Quelqu'un peut-il montrer un exemple?

La macro doit être quelque chose le long des lignes de ce qui suit:

Sub showrng() 
    MsgBox SelectedRange.Address(ReferenceStyle:=xlA1) 
End Sub 

Répondre

11
Sub macro1() 
    MsgBox Selection.Address(ReferenceStyle:=xlA1, _ 
          RowAbsolute:=False, ColumnAbsolute:=False) 
End Sub 

HTH!

+1

+1 mais ReferenceStyle: = xlA1 serait correspondre plus étroitement aux exigences de la question – barrowc

3
Sub macro1() 
    MsgBox Selection.Address 
End Sub 

ou

Sub macro1() 
    Dim addr as String 
    addr = Selection.Address 
    msgbox addr 

    ' Now, as we found the address, according to that... you can also do other operations 

End Sub 
1

Comme les sélections peuvent inclure plusieurs gammes, indépendantes, le code suivant montre une solution plus complète au problème:

Public Sub SelectionTest() 
Dim r As Range 
Dim s As String 

    Select Case Selection.Areas.Count 
    Case 0: 
    MsgBox "Nothing selected." 
    Case 1: 
    MsgBox "Selected range: " & Selection.Areas(1).Address(False, False) 
    Case Else 
    s = "" 
    For Each r In Selection.Areas 
     s = s + vbNewLine + r.Address(False, False) 
    Next r 
    MsgBox "Selected several areas:" & s 
    End Select 

End Sub