1 votos

Deshabilitar Ctrl + V en Microsoft Excel (permitir pegar con clic derecho)

Tengo una hoja de cálculo de Excel que utilizo yo y mi equipo. Esta hoja de cálculo utiliza formato condicional, por lo que me gustaría que mi equipo NO use Ctrl + V y en su lugar hagan clic derecho y utilicen 'pegar como valores'. Cuando utilizan Ctrl + V, hace que el formato condicional se fragmente con el tiempo. Les he comentado sobre esto y he agregado un recordatorio de mensaje emergente utilizando la Validación de datos, ¡pero aún así utilizan Ctrl + V!

Quiero deshabilitar el pegado con Ctrl + V y agregar un cuadro de mensaje a Ctrl + V.

Aquí está mi VBA (he vinculado pasteWarn() a Ctrl + V). Parece que no tiene ningún efecto en absoluto: el cuadro de mensaje no aparece y Ctrl + V funciona normalmente.

Sub pasteGone()
'Deshabilitar CTRL + V.
Application.OnKey "^{v}", "" 'Pegar
End Sub

Sub pasteWarn()
' Vincular esto a Ctrl + V
MsgBox "Se ha deshabilitado Ctrl + V. Por favor, haga clic derecho y use 'Pegar como Valores'."
End Sub

Posible complicación: mi equipo y yo utilizamos una mezcla de Office 2016, 2013 y 2010. (Estoy en 2016; todos ellos en 2010 y 2013).

0voto

User91504 Puntos 508

Tuve un problema similar anteriormente, la única solución que pude encontrar fue evitar que el usuario pudiera copiar. (sé que esto puede no ser exactamente lo que buscas, ya que aún pueden necesitar usar copiar)

Usé lo siguiente:

Private Sub Workbook_Activate()
    Application.CutCopyMode = False
    Application.OnKey "^c", ""
    Application.CellDragAndDrop = False
End Sub
Private Sub Workbook_Deactivate()
    Application.CellDragAndDrop = True
    Application.OnKey "^c"
    Application.CutCopyMode = False
End Sub
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
    Application.CutCopyMode = False
    Application.OnKey "^c", ""
    Application.CellDragAndDrop = False
End Sub
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
    Application.CellDragAndDrop = True
    Application.OnKey "^c"
    Application.CutCopyMode = False
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Application.CutCopyMode = False
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Application.OnKey "^c", ""
    Application.CellDragAndDrop = False
    Application.CutCopyMode = False
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    Application.CutCopyMode = False
End Sub
Private Sub Workbook_Open()
    MsgBox "Copiar y pegar en la matriz de habilidades ha sido deshabilitado para prevenir cambios en la funcionalidad del libro."

0voto

simau500 Puntos 585

Esta no es una respuesta a la pregunta tal como está formulada, pero posiblemente sea una forma de resolver el problema de todos modos.

En lugar de obligar a los usuarios a adaptarse al libro de trabajo, haz que el libro de trabajo se adapte a la entrada para que coincida con el libro de trabajo.
Es decir, cuando el usuario pega algo, deshacer lo que hicieron y pegarlo como valores en su lugar.
De esa manera, pueden pegar con CTRL+V y seguirá siendo correcto.
Debes establecer un breakpoint en el código en la línea lastAction y ver qué significa "Pegar" en tu idioma y usarlo en el If.

Private Sub Worksheet_Change(ByVal Target As Range)

  lastAction = Application.CommandBars("Standard").FindControl(ID:=128).List(1)

  If lastAction = "Pegar" Then ' cambia a tu idioma
        With Application
            .EnableEvents = False
            .Undo
        End With
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        Application.EnableEvents = True
  End If
End Sub

Agrega el código anterior a la(s) hoja(s) en la(s) que desees tener esto. También puedes usar el Target si deseas limitar el PegarValores solo a una parte de la hoja.

1 votos

¡Gracias! ¡Eso funciona de maravilla!

0 votos

@InskoraBournvadus ¡No hay problema! Gracias por una interesante pregunta para resolver

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X