Macro para bloquear tres celdas a la vez una vez insertada un dato en alguna de ellas

tengo diseñado un archivo que esta dirigido a los docentes de colegio
con el objetivo de facilitarles el trabajo a la hora de tomar exámenes y
revisar las mismas el detalle es que en cada hoja de los exámenes tengo
tres celdas en la que se inserta una "X" si considera que es la
respuesta correcta y automáticamente suma el valor que corresponde a la
pregunta si respondió correctamente lo que quiero es una ves insertada
un valor en cualquiera de de las tres celdas se bloquee las tres celdas y
no pueda modificar los valores
las hojas están bloqueadas excepto las celdas donde tienen que introducir los valores
tengo
k16,k17,k18 para insertar los datos. Hagamos de cuenta que elijo k17
una ves insertada el dato en k17 quiero que k16,k17,k18 se bloqueen
impendiendo modificar los valores, pero dentro de la misma hoja tengo
otra pregunta con opciones de respuesta en k22,k23,k24, quiero que me
funcione de igual manera en estas opciones de repuesta
dentro de la misma hoja tengo 10 preguntas y dentro el archivo 47 hojas de exámenes
necesito un macro que se active en las hojas del 1 al 47 o de lo contrario un macro para cada hoja les dejo el link del
descargar el archivo desde este link
http://www.mediafire.com/?ott7xtkrlo5zg1p

la contraseña para desbloquear el archivo es "garyariel"

1 respuesta

Respuesta
1

Ya me descargue la hoja, mañana con mas tiempo te doy la respuesta.

Disculpa el retraso:

El código que debe de ir dentro de un modulo (el que ya tienes creado):

Public Sub Bloquear(Celda As Range, Hoja As Worksheet)
Hoja.Unprotect garyariel 
Select Case Celda.Row
 Case 16 To 18
 Hoja.Range( K & 16).Locked = True
 Hoja.Range( K & 17).Locked = True
 Hoja.Range( K & 18).Locked = True
 Case 22 To 24
 Hoja.Range( K & 22).Locked = True
 Hoja.Range( K & 23).Locked = True
 Hoja.Range( K & 24).Locked = True
 Case 28 To 30
 Hoja.Range( K & 28).Locked = True
 Hoja.Range( K & 29).Locked = True
 Hoja.Range( K & 30).Locked = True
 Case 34 To 36
 Hoja.Range( K & 34).Locked = True
 Hoja.Range( K & 35).Locked = True
 Hoja.Range( K & 36).Locked = True
 Case 40 To 42
 Hoja.Range( K & 40).Locked = True
 Hoja.Range( K & 41).Locked = True
 Hoja.Range( K & 42).Locked = True
 Case 46 To 48
 Hoja.Range( K & 46).Locked = True
 Hoja.Range( K & 47).Locked = True
 Hoja.Range( K & 48).Locked = True
 Case 52 To 54
 Hoja.Range( K & 52).Locked = True
 Hoja.Range( K & 53).Locked = True
 Hoja.Range( K & 54).Locked = True
 Case 58 To 60
 Hoja.Range( K & 58).Locked = True
 Hoja.Range( K & 59).Locked = True
 Hoja.Range( K & 60).Locked = True
 Case 64 To 66
 Hoja.Range( K & 64).Locked = True
 Hoja.Range( K & 65).Locked = True
 Hoja.Range( K & 66).Locked = True
 Case 70 To 72
 Hoja.Range( K & 70).Locked = True
 Hoja.Range( K & 71).Locked = True
 Hoja.Range( K & 72).Locked = True
End Select
Hoja.Protect garyariel 
End Sub

Luego este código debe ir en cada una de las hojas de preguntas del examen:

Private Sub Worksheet_Change(ByVal Target As Range)
 Call Bloquear(Target, ActiveSheet)
End Sub

Comentarte varias cosas:

1. Asi como has protegido las hojas, debes proteger el editor de código vba, que se hace dentro del editor de vba en el menú Herramientas > Propiedades de vba y en la pestaña Protección.

2. Si se entra en una casilla y se escribe algo, aunque luego borremos el contenido de la celda antes de salir se bloqueara igualmente, pues se entiende que eso ha sido un cambio en la celda.

3. Tal vez seria mas apropiado cambiar la formula que solo funciona si escribes una x, porque si escribes cualquier otra letra o símbolo veo que no funciona, y habría sido mas fácil usar un sino = "", asi funcionaria con cualquier símbolo.

4. Si la idea es reutilizar el libro para otros exámenes es mejor que guardes una "copia maestra", que no tenga las celdas ya bloqueadas, que luego desbloquearlas a mano en las 50 hojas resultaría algo tedioso, claro esta que se podría hacer un código para eso también...

5. Me ha gustado la presentación del examen en su conjunto, ¿cómo insertas la imagen para que te quede de fondo por detrás de las celdas?

6. Tal vez seria mejor usar vba para controlar las respuestas correctas o incorrectas, por el motivo de que seria mucho mas sencillo indicarlas en un cuadro dentro de una hoja que tener que modificar la formula esa enorme, que lio!

Saludos

Pd. Un fallo de hace mucho tiempo de todoexpertos: al pegar el código desaparecen las comillas, asi que hay que añadir las comillas en la contraseña que protege y desprotege la hoja. Y la letra K también debe ir entre comillas en todas las instrucciones!

Para otros exámenes las celdas para marcar las respuestas deberían estar en la misma posición (fila y columna) para que funciónara bien.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas