Anular la opción mover

12/08/2009 - 04:34 por Francesca Brasso | Informe spam
Hola necesito un código para anular la posibilidad de mover celdas.
Agradecida de quien me la pueda proporcionar.
Francesca
 

Leer las respuestas

#1 Héctor Miguel
12/08/2009 - 05:27 | Informe spam
hola, Francesca !

... necesito un codigo para anular la posibilidad de mover celdas...



(hasta donde se...) existen varias formas de "mover" celdas (p.e. "arrastrar", cortar/pegar, etc.)
y algunas de las configuraciones de este tipo de acciones son OPCIONES DEL USUARIO, o sea...
si las vas a "administrar", NO te olvides de "dejarlas como estaban" (son las preferencias del usuario)

tambien hay varias alternativas para evitar (hasta un cierto grado) el uso de Copiar_Cortar_Pegar
ademas de los botones, estan los atajos {Ctr}+C, {Ctrl}+X, {Ctrl}+V, {Mayusc}+{Insert} (etc.)
... inclusive, se podrian crear al vuelo mas botones (si ya los tenias bloqueados) :((

te paso un adelanto en seguida y... si cualquier duda (o informacion adicional)... comentas?
OJO: no estan contempladas para ser usadas (transparentemente) con la version 2007
saludos,
hector.

(en los modulos de eventos de hojas y libro p.e.)
en el evento _selectionchange (de la/s hoja/s)
en los eventos _activate y _deactivate (de la/s hoja/s y del libro)

-> la mas sencilla seria utilizar -> Application.CutCopyMode = False <-
-> otra seria el uso de los mismos eventos con apoyo de codigo +/- como el siguiente:
-> en un modulo de codigo normal (nota: el CXV es solo por las letras de los atajos)

' macro para cancelar el uso de cualquier boton y atajos de copiado/pegado
Sub CXV_No()
CXV_Si_No 19, False: CXV_Si_No 21, False
CXV_Si_No 22, False: CXV_Si_No 755, False
With Application
.OnKey "^x", "": .OnKey "^c", "": .OnKey "^v", "": .OnKey "+{Del}", "": .OnKey "+{Insert}", ""
.EditDirectlyInCell = False: .CellDragAndDrop = False
End With: CommandBars("ToolBar List").Enabled = False
End Sub

' macro para liberar el uso de los botones y atajos de copiado/pegado
Sub CXV_Si()
CXV_Si_No 19, True: CXV_Si_No 21, True
CXV_Si_No 22, True: CXV_Si_No 755, True
With Application
.OnKey "^x": .OnKey "^c": .OnKey "^v": .OnKey "+{Del}": .OnKey "+{Insert}"
.EditDirectlyInCell = True: .CellDragAndDrop = True
End With: CommandBars("ToolBar List").Enabled = True
End Sub

' funcion auxiliar para cancelar/liberar el uso de los comandos
Private Function CXV_Si_No(Num As Integer, Si_No As Boolean)
Dim Barra As CommandBar, Boton As CommandBarControl
On Error Resume Next
For Each Barra In Application.CommandBars
Set Boton = Barra.FindControl(Id:=Num, Recursive:=True)
If Not Boton Is Nothing Then Boton.Enabled = Si_No
Next: Set Boton = Nothing
End Function

nota: las dos opciones anteriores podrian presentar la siguiente falla:
que pasa si el usuario abre el libro SIN permiso de usar macros?

Preguntas similares