(VBA) Direccion de la Seleccion marcada para Copiar / Cortar

20/09/2005 - 11:53 por Luis Garcia | Informe spam
Hola a todos:

¿ Como puedo saber la direccion de la(s) celda(s) marcadas para
Copiar/Cortar ?

En XL2000, yo puedo saber mediante Application.CutCopyMode el estado del
modo Copiar/Cortar, pero no he encontrado en ningún sitio donde obtener la
DIRECCION de la selección marcada.

No me sirve 'Selection', puesto que (para que se vea el 'modus operandi'),
es
como si hiciera un CopiarExtended:

Private Sub CopiarExtended()
If Application.CutCopyMode Then
''' >>> AQUI necesito saber el RANGO a copiar/pegar <<<
Selection.PasteSpecial
End If
End Sub

Nota: Estoy planteandome usar el WorkSheet_SelectionChange() para controlar
mediante CutCopyMode y Selection que rango está marcado para Copiar/Pegar,
pero lo veo demasiado complicado (debe haber alguna forma mas facil) y con
muchas posibilidades de error.

Saludos

Luis

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
20/09/2005 - 20:54 | Informe spam
hola, Luis !

... saber la direccion de la(s) celda(s) marcadas para Copiar/Cortar ?
... puedo saber mediante Application.CutCopyMode el estado del modo Copiar/Cortar
... no he encontrado en ningun sitio donde obtener la DIRECCION de la seleccion marcada.
No me sirve 'Selection', puesto que (para que se vea el 'modus operandi'), es como si hiciera un CopiarExtended [...]



[yo creo que] SI te sirve la propiedad selection... [solo que de una forma poco 'convencional'] :)) p.e.
-> necesitaras modificar el 'comportamiento' de las combinaciones [o atajos] de teclado para copiar/cortar [ctrl+c / ctrl+x]
[ademas de las otras 'opciones' del usuario como los botones de herramientas y los menus contextuales] :-( <= OJO

-> suponiendo que SOLO vas a necesitar 'controlar' las acciones de copiar/cortar ->por el teclado<-...
copia las siguientes lineas... corres algunas pruebas... y [seguramente] habra que hacer algunas 'ligeras' modificaciones :D

si cualquier duda [o informacion adicional]... comentas?
saudos,
hector.

en un modulo de codigo 'normal' ==Option Private Module
Public Objeto As String, Hoja As String
Sub ControlarCutCopy(Optional ByVal Cortando As Boolean)
With Selection
If TypeName(Selection) = "Range" _
Then Objeto = .Address Else Objeto = .Name
Hoja = .Parent.Name: If Cortando Then .Cut Else .Copy
End With
MsgBox IIf(Cortando, "Cortando", "Copiando") & " " & Objeto & " desde " & Hoja
End Sub

en el modulo de codigo de 'ese' libro [ThisWorkbook] ==Private Sub Workbook_Open()
Application.OnKey "^c", "ControlarCutCopy"
Application.OnKey "^x", "'ControlarCutCopy 1'"
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnKey "^c": Application.OnKey "^x"
End Sub
Respuesta Responder a este mensaje
#2 Luis Garcia
21/09/2005 - 17:10 | Informe spam
Hola Hector Miguel:

Me gusta la solucion :), a pesar de que encuentro 'un fallo' que el propio
Excel no te de ya por defecto esta informacion!!!

[ademas de las otras 'opciones' del usuario como los botones de


herramientas y los menus contextuales] :-( <= OJO

Esta es la parte que me 'da miedo' puesto que tendria que recorrer y
modificar cosas, cuando a mi me interesa controlar/facilitar una 'cosilla',
y que el resto del Excel funcione igual, y si empiezo a modificar en
demasia, quizas no me salga rentable.
Total, es para facilitarle la vida a los usuarios, les digo que no se puede
y ya esta :-))))

Saludos y gracias

Luis


"Héctor Miguel" escribió en...
hola, Luis !

> ... saber la direccion de la(s) celda(s) marcadas para Copiar/Cortar ?
> ... puedo saber mediante Application.CutCopyMode el estado del modo


Copiar/Cortar
> ... no he encontrado en ningun sitio donde obtener la DIRECCION de la


seleccion marcada.
> No me sirve 'Selection', puesto que (para que se vea el 'modus


operandi'), es como si hiciera un CopiarExtended [...]

[yo creo que] SI te sirve la propiedad selection... [solo que de una forma


poco 'convencional'] :)) p.e.
-> necesitaras modificar el 'comportamiento' de las combinaciones [o


atajos] de teclado para copiar/cortar [ctrl+c / ctrl+x]
[ademas de las otras 'opciones' del usuario como los botones de


herramientas y los menus contextuales] :-( <= OJO

-> suponiendo que SOLO vas a necesitar 'controlar' las acciones de


copiar/cortar ->por el teclado<-...
copia las siguientes lineas... corres algunas pruebas... y


[seguramente] habra que hacer algunas 'ligeras' modificaciones :D

si cualquier duda [o informacion adicional]... comentas?
saudos,
hector.

en un modulo de codigo 'normal' ==> Option Private Module
Public Objeto As String, Hoja As String
Sub ControlarCutCopy(Optional ByVal Cortando As Boolean)
With Selection
If TypeName(Selection) = "Range" _
Then Objeto = .Address Else Objeto = .Name
Hoja = .Parent.Name: If Cortando Then .Cut Else .Copy
End With
MsgBox IIf(Cortando, "Cortando", "Copiando") & " " & Objeto & " desde "


& Hoja
End Sub

en el modulo de codigo de 'ese' libro [ThisWorkbook] ==> Private Sub Workbook_Open()
Application.OnKey "^c", "ControlarCutCopy"
Application.OnKey "^x", "'ControlarCutCopy 1'"
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnKey "^c": Application.OnKey "^x"
End Sub


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida