Desactivar función Pegar en Excel

18/02/2008 - 11:15 por Daniel Domínguez | Informe spam
Hola. Tengo una hoja excel con validaciones de algunos campos y mi problema
es que estas funcionan cuando el usuario escribe datos en ellos, pero no
cuando copia un valor de otra hoja excel, con lo que me pueden introducir
datos erróneos. Necesitaría saber si hay alguna manera de impedir que se
pueda pegar nada en la hoja excel, o bien si se puede solucionar el tema de
que las validaciones no funcionan cuando pegas datos.

Muchas gracias por adelantado.
 

Leer las respuestas

#1 Héctor Miguel
18/02/2008 - 18:12 | Informe spam
hola, Daniel !

... Tengo una hoja... con validaciones de algunos campos y... estas funcionan cuando el usuario escribe datos en ellos
pero no cuando copia un valor de otra hoja excel, con lo que me pueden introducir datos erroneos.
... hay alguna manera de impedir que se pueda pegar nada en la hoja excel
o bien si se puede solucionar el tema de que las validaciones no funcionan cuando pegas datos...



necesitarias usar codigo en los eventos de 'esa' hoja (suponiendo que las macros sean una opcion 'viable') -?-
y la alternativa mas sencilla seria cancelar el evento de copiar/cortar/pegar en cada cambio de seleccion en "esa" hoja (p.e.)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.CutCopyMode = False
End Sub

aunque es probable que no siempre debiera hacerse dicha cancelacion (habra regiones donde si sea permitido) -?-
otra alternativa es que la cancelacion sea solamente cuando en el area de destino existan celdas CON validacion de datos (p.e.)

1) haz un click-secundario sobre la etiqueta (con el nombre) de 'esa' hoja... y selecciona -> ver codigo...
2) copia/pega las siguientes lineas en el modulo de codigo de 'esa' hoja...
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Selection, Me.Cells.SpecialCells(xlCellTypeAllValidation)) Is Nothing Then Exit Sub
With Application
If .CutCopyMode = xlCut Or .CutCopyMode = xlCopy Then
.CutCopyMode = False
MsgBox "El rango de destino contiene celdas con validacion de entrada." & vbCr & _
"NO debes sobre-escribir estas reglas de validacion !!!."
End If
End With
End Sub

-> solo asegurate de que NO exista mas de un procedimiento con el nombre de:
-> Private Sub Worksheet_SelectionChange(ByVal Target As Range)

y todavia podria existir el riesgo de que al pegar, el rango inicial no incluya celdas validadas, pero el pegado se extienda a donde si -???-

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

Preguntas similares