¿Cómo puedo condicionar una celda?

16/06/2009 - 17:44 por Víctor | Informe spam
Tengo un área de captura de datos y requiero que una vez capturado el
registro, NUNCA ser modificado posteriormente [evitar ajustes o cambios].

Sólo por el responsable del área y dueño de los datos se podrá corregir,
previa explicación del error de captura.

Gracias…
 

Leer las respuestas

#1 Víctor
22/06/2009 - 19:02 | Informe spam
Gracias.

"Héctor Miguel" wrote:

hola, Víctor !

> 1°. Gracias por el apoyo de las celdas no contiguas!, fuciono excelente.

=> gracias a ti (por el "feed-back") ;)

> 2°. Ahora de esta nueva peticion:
> - Ya tengo una matriz con celdas (no protegidas) condicionadas a varios rangos.
> - La hoja de trabajo la bloqueo con el password correspondiente. Solo queda disponible el area de captura.

=> si comentaras los rangos "especificos"... la propuesta podria surgir "casi perfecta" (?)
en el siguiente ejemplo uso una variable constante llamada "miRango"
y estoy suponiendo que se trata de varios rangos no contiguos (p.e. [A1:B15], [C45], [E8:H70])
y otra variable constante llamada "miClave" asumiendo que es "aBc"

> - Quien recibira estos datos, requiere que una vez capturado el registro, Excel no permita modificarla.
> Lo anterior con la finalidad de evitar AJUSTES.
> - Creo que la mejor opciones que haces referencia puede ajustar bien
> pero como se ejecuta la macro, ya que el usuario solo y unicamente debe capturar datos.

=> prueba y analiza el codigo siguiente, ya comentaras por cualquier adaptacion necesaria segun "tu realidad" (?)

> Referente a tu duda: "aprobarias" es parte de este proceso.

=> bueno... supongo que esta parte (de momento) seguira "en el tintero" (asumo que ya lo tienes resuelto) (?)

saludos,
hector.

1) en un modulo de codigo estandar
' declaramos las variables constantes para modificar solo aqui (cuando sea necesario)
Public Const miRango As String = "a1:a15,c45,e8:h70"
Public Const miClave As String = "aBc"

2) en el modulo de codigo del libro (ThisWorkbook)
' proteges la hoja en el evento '_open' de tu libro cada vez que se abra _
con la opcion de solo la interfase con el usuario _
(excel se olvida de algunas caracteristicas como esta y la de seleccionar solo desbloqueadas)
Private Sub Workbook_Open()
Worksheets("hoja1").Protect miClave, 1, 1, 1, 1
End Sub

3) en el modulo de codgo de "esa" hoja
' sera necesario evitar que el usuario seleccione mas de una celda a la vez (para prevenir otras eventualidades)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range(miRango)) Is Nothing _
And Target.Count > 1 Then ActiveCell.Select
End Sub
' y aplicar la des/re/proteccion de "miRango" segun si estan vacias (o no)
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range(miRango)) Is Nothing Then Exit Sub
Target.Locked = Not IsEmpty(Target)
' Me.EnableSelection = xlUnlockedCells
End Sub

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



Preguntas similares