Tengo un amigo que esta haciendo un informe el cual van a utilizar dos personas .. El quiere que cuando ponga un dato en la columna A en la columna B de la misma fila le aparezca la fecha en que hizo el movimiento de la celda A, sin que lo pueda modificar, en caso de que el se e ... Quivoque pues que pueda utilizar como una clave para corregirlo. Espero que me haga entender y gracias por su ayuda
Respuesta de Claudio Cruz
1
1
Claudio Cruz, Es mejor encender una vela que maldecir la oscuridad
Para poner la fecha en la columna B puedes usar el siguiente código: Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Not Intersect(Target, Range("A:A")) Is Nothing Then Target.Offset(0, 1).Value = Date End If End Sub Ese código debes ponerlo en la hoja donde quieras que se active la macro. Con relación a proteger contra modificaciones, ¿puedes ser un poco más especifico? ¿Quién podrá corregir?
Complementando la respuesta anterior puedes hacer lo siguiente: Sustituye el código anterior por: Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Not Intersect(Target, Range("A:A")) Is Nothing Then Target.Offset(0, 1).Value = Date ActiveCell.Offset(-1, 0).Select Selection.EntireRow.Select ActiveSheet.Unprotect Password:="tuclave" With Selection .Locked = True .FormulaHidden = False End With ActiveSheet.Protect Password:="tuclave" ActiveCell.Offset(1, 0).Select End If End Sub Recuerda cambiar la clave por la que gustes, recuerda que este código va en el código de la hoja donde quieres que se ejecute la macro que hace el trabajo de poner la fecha y bloquear la hoja para modificaciones posteriores. Bien, si necesitas que la celda pueda modificarse posteriormente solo por una persona especifica, entonces haz lo siguiente: Inserta un nuevo modulo en tu libro y escribes el siguiente codigo: Sub ModCelda() MsgBox "Welcome " & Environ("username") & Chr(13) & "Welcome " & Application.UserName Select Case Application.UserName Case "nombre de usuario autorizado" If MsgBox("Está seguro de querer modificar la celda actual?", _ vbYesNo + vbExclamation) = vbNo Then Exit Sub Else ActiveSheet.Unprotect Password:=InputBox("Clave: ", "Ingrese su clave") Exit Sub End If Case Else MsgBox "Ud no está autorizado para modificar esta celda" & Chr(13) & _ "Favor de contactar a NOMBRE AUTORIZADO", vbCritical Exit Sub End Select End Sub Ahora en tu hoja, vas a dibujar un botón de formulario, y automáticamente te abrirá una ventana donde te pide indicar la macro que vas a asociar a ese botón, selecciona la macro ModCelda Y es todo, con ello debe funcionar a la perfección. Avisa si te funciona.