(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
 

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

Preguntas similares