Macro que no deje borrar ciertos valores de un rango.

Hola Amigo Asilveira, espero no sea molestia consultarle una cosa más que estoy intentando hacer.
No se si se podría elaborar una macro cuya función sea que los datos de cierto rango no los permita borrar y muestre un userForm o un MsgBox algo por el estilo, solcitando una clave para acceder.
Ejemplo, Los datos que se muestran en el rango de la hoja de excel C3 hasta C1000 no se dejen borrar solo si le introduces una clave... Pero el resto de celdas si se pueden modificar normal, que la macro solo afecte a ese rango C3:C1000.
Es decir, en el rango C3:C1000 puedo ingresar datos pero no los podría borrar, solo hasta cuando le introduzca una calve de acceso mediante un UserForm o algo por estilo...
Le agradezco de corazón su colaboración.
Att; Luis

1 Respuesta

Respuesta
1
Tal com tu lo describes no es posible (ingresar datos en el rango pero no dejarlos borrar. Lo que si se podía hacer es que cuando se seleccione una celda de este rango se active un form para ingresar el dato o borrarlo. Para esto usaremos 2 userform (userform1 = para el ingreso /borrado del dato. userform2 = para el ingreso de la clave)
El primero contiene un textbox (TB1) para el ingreso/borrado del valor de la celda y 2 commandbutton (bAceptar y bBorrar)
El segundo contiene igual. Un TB2 para el ingreso de la clave y 2 commandbutton
Para llamar al primero debemos escribir el siguiente código en el change de la hoja
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
fila = ActiveCell.Row
col = ActiveCell.Column
Range("d1") = fila
Range("d2") = col
If col = 3 And fila > 3 Then
UserForm1.Show
End If
End Sub
Para el form1 este es el còdigo :
Private Sub bAceptar_Click()
fila = ActiveCell.Row
col = ActiveCell.Column
Cells(fila, col) = TB1.Value
UserForm1.Hide
End Sub
Private Sub bBorrar_Click()
UserForm2.Show
End Sub
Private Sub TB1_Change()
If TB1.Value = "" Then
bAceptar.Enabled = False
Else
bAceptar.Enabled = True
End If
End Sub
Private Sub UserForm_Activate()
fila = ActiveCell.Row
col = ActiveCell.Column
TB1.Value = Cells(fila, col)
TB1.SetFocus
End Sub
y para el segundo este:
Private Sub b_acepta_clave_Click()
If TB_clave = "123" Then
UserForm1.TB1.Value = ""
UserForm1.bAceptar.Enabled = True
UserForm2.Hide
UserForm1.bAceptar.SetFocus
Else
r = MsgBox("Clave incorrecta")
End If
End Sub
Private Sub b_cancela_clave_Click()
UserForm2.Hide
End Sub
Espero que te halla sido de ayuda, si quedan dudas te puedo mandar vía mail un ejemplo (aunque creo que esta bastante claro ;) .
Por cualquier consulta quedo a las ordenes.
Saludos, y no te olvides de finalizar y evaluar la respuesta.
Muy bueno, te voy a enviar un ejemplo para me colabores... eso que me enviaste más algo que quiero modificarle... regálame tu email.
ATT; Luisfer

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas