If Range("Origen").Address = Target.Address then ...
a mí no me da error aunque la selección sea de varias celdas...
Un saludo.
Fernando Arroyo
MS MVP - Excel
"MarianoH" <anon...@discussions.microsoft.com> escribió en el mensaje news:2087d01c4590e$2d1324a0$a001...@phx.gbl...
If Range("Origen") Is Target ....
Si referencian al mismo objeto es true
"MarianoH" <anon...@discussions.microsoft.com> escribió en el mensaje
news:2087d01c4590e$2d1324a0$a001...@phx.gbl...
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("A2"), Target) Is Nothing Then
MsgBox ("Ha cambiado el rango A2")
End If
End Sub
--Si utilizo: <Range("a2") is Target> siempre me da falso.
--Y si uso <Range("A2").Address=Target.Address> tengo un
error cuando, por ejemplo, quiero deletear el rango A2:B8
Si no estoy contemplando algo, agradeceré la corrección.
Saludos
>-----Mensaje original-----
>Como vas a comparar objetos, deberias usar Is
>
>If Range("Origen") Is Target ....
>
>Si referencian al mismo objeto es true
>
>"MarianoH" <anon...@discussions.microsoft.com> escribió
en el mensaje
-----------------------------------------------------
>Quiero saber si el rango que recibo como Target en un
>evento es uno en particular dentro de la hoja.
>If Range("Origen") = Target... da error y si
>utilizo .Address u otras propiedades que estuve probando
>me arroja un error cuando un Target tiene mas de una
celda.
>He utilizado Row y Col, pero seguramente debe haber alguna
>manera más directa.
>Gracias
>Mariano
>
>.
>
> ... Si no estoy contemplando algo, agradecere la correccion [...]
la propuesta que te hace Fernando Arroyo es correcta ;)
> If Range("Origen").Address = Target.Address then ...
supone que 'Origen' es un rango 'con nombre' o...
una [variable de texto con la] direccion de celda/s
toma en cuenta las notas que te expongo al final ;)
saludos,
hector.
----------
para 'comprobrar' si el rango seleccionado es 'uno en particular'...
[puesto que la propiedad 'por omision' de un objeto 'Range' es... 'Value']
se debera 'atender' a su propiedad 'Address' [cadena de texto]
lo cual... 'implica' que la 'comparacion' [en vba] debe ser =>exacta<= [mayusculas, etc.]
[a menos que... al inicio del modulo se ponga la instruccion 'Option Compare Text']
suponiendo que la celda seleccionada fuese 'A1'...
[segun 'el tipo Address' de la instruccion empleada en el evento '_SelectionChange']...
a) Target.Address =>devolvera<= "$A$1"
b) Target.Address(False) =>devolvera<= "$A1"
c) Target.Address(, False) =>devolvera<= "A$1"
d) Target.Address(False, False) =>devolvera<= "A1"
e) Target.Address(, , xlR1C1) =>devolvera<= "R1C1"
f) Target.Address(, , , True) =>devolvera<= "[Libro1]Hoja1!$A$1"
g) [alguna 'combinacion' de las anteriores ???] ;)
la instruccion Target = "A1"... devolvera 'True'...
=> SOLO si la [unica] celda seleccionada =>'contiene' "A1"<=
la instruccion Target = Range("b1")... devolvera 'True'...
=> SOLO si el 'valor' de la [unica] celda seleccionada =>es igual al de 'B1'<=
AMBOS 'fallan' si el 'Target' es de mas de una celda :((
si necesitas 'asegurarte' que el rango seleccionado sea [p.e.] 'b2:f3'...
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$B$2:$F$3" Then
MsgBox "Acertaste !!!"
Else
MsgBox "<\°|°/> Inténtalo de nuevo"
End If
End Sub