Progeger automaticamente rangos de celdas

04/12/2003 - 17:31 por Ricardo Vinella | Informe spam
Amigos: Tengo el siguiente problema. Necesito encontrar alguna forma automática que me permita que, una vez que escribí algo en una celda y me mueva a otra, ya no pueda volver a la anterior ni corregir su contenido. Esto lo tengo que hacer sin colocar contraseña, sin haber grabado el libro posteriormente
Es decir, escribo algo, cambio de celda y ya no puedo volver a la anterior. Sólo verla, pero no corregirla
¿Alguien sabe cómo
Gracias desde ya

Ricardo.

Preguntas similare

Leer las respuestas

#1 Fernando Arroyo
04/12/2003 - 17:52 | Informe spam
Prueba con este código, que tendrás que poner en el módulo de la hoja (click derecho sobre su etiqueta->Ver código):


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells(1).Value <> "" Then
MsgBox "Esta celda no se puede modificar."
Application.EnableEvents = False
Cells(Cells(65536, Target.Column).End(xlUp).Row + 1, Target.Column).Select
Application.EnableEvents = True
End If
End Sub


Pero ten en cuenta que no podrás volver a una celda no vacía ni siquiera para borrar su contenido. Y ten en cuenta también que si la idea es evitar que otras personas puedan modificar las celdas con algún valor, se puede conseguir que no se ejecute el código con tan sólo contestar "No" al mensaje sobre si se autoriza la ejecución de código...

Al intentar seleccionar una celda no vacía, aparece un mensaje de error y la selección se desplaza a la celda siguiente a la última no vacía de la misma columna.

Un saludo.


Fernando Arroyo
MS MVP - Excel

"Ricardo Vinella" escribió en el mensaje news:
Amigos: Tengo el siguiente problema. Necesito encontrar alguna forma automática que me permita que, una vez que escribí algo en una celda y me mueva a otra, ya no pueda volver a la anterior ni corregir su contenido. Esto lo tengo que hacer sin colocar contraseña, sin haber grabado el libro posteriormente.
Es decir, escribo algo, cambio de celda y ya no puedo volver a la anterior. Sólo verla, pero no corregirla.
¿Alguien sabe cómo?
Gracias desde ya.

Ricardo.
Respuesta Responder a este mensaje
#2 Fernando Arroyo
28/12/2003 - 16:43 | Informe spam
Oscar, si lo que necesitas es que el código que pide una contraseña para poder escribir en la hoja se pueda aplicar a todas las celdas, pienso que lo único que tienes que hacer es quitar las instrucciónes Select Case, Case y End Select, algo como:


Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Permiso As String
' Se le "pide" una clave '
Permiso = InputBox("¿Cuál es tu clave?")

If Permiso <> "password" Then
' Si la clave es "incorrecta" ... se le "notifica" '
MsgBox "La clave ¡ NO es correcta !!!"
Else
' Si la clave es "correcta" ... le "solicitamos" la "entrada" '
Target = InputBox("Indica el dato para la celda " & Target.Address)
End If

' En TODOS los casos... lo "mandamos" a A1
Application.EnableEvents = False
Range("A1").Select
Application.EnableEvents = True
End Sub


El problema es que después de la edición de una celda (o del intento de edición si no se conoce la contraseña) hay que convertir alguna celda en la activa porque si no se entraría en una especie de bucle sin fin. El código asume que dicha celda es la A1.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Compumakro" escribió en el mensaje news:
Fernándo:
Esto estaría excelente si se pidiera contraseña en caso de que se necesitara actualizar algún dato.
En consecuencia pregunto: ¿Cómo se fusionarían, el código que expones y este otro?

Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Permiso As String
Select Case Target.Address
' Si el usuario selecciona "B6" ó "B18"... ' Toda la Hoja
Case "$B$6", "$B$18" Toda la Hoja
' Se le "pide" una clave '
Permiso = InputBox("¿Cuál es tu clave?")
If Permiso <> "password" Then
' Si la clave es "incorrecta" ... se le "notifica" '
MsgBox "La clave ¡ NO es correcta !!!"
Else
' Si la clave es "correcta" ... le "solicitamos" la "entrada" '
Target = InputBox("Indica el dato para la celda " & Target.Address)
End If
' En TODOS los casos... lo "mandamos" una celda arriba '
Target.Offset(-1).Select
End Select
End Sub



Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells(1).Value <> "" Then
MsgBox "Esta celda no se puede modificar."
Application.EnableEvents = False
Cells(Cells(65536, Target.Column).End(xlUp).Row + 1, Target.Column).Select
Application.EnableEvents = True
End If
End Sub


Pero ten en cuenta que no podrás volver a una celda no vacía ni siquiera para borrar su contenido. Y ten en cuenta también que si la idea es evitar que otras personas puedan modificar las celdas con algún valor, se puede conseguir que no se ejecute el código con tan sólo contestar "No" al mensaje sobre si se autoriza la ejecución de código...

Al intentar seleccionar una celda no vacía, aparece un mensaje de error y la selección se desplaza a la celda siguiente a la última no vacía de la misma columna.

Saludos

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