Macro para inhabilitar una celda

Espero alguien me pueda colaborar... Resulta que estoy haciendo un formato de factura en excel a quien le puse una macro para crear un numero consecutivo que seria el numero de factura el consecutivo funciona pero desearía poder inhabilitar esta celda para no correr el riesgo de que alguien introduzca datos dentro de esta o simplemente borre el numero y se pierda el numero consecutivo.. Espero haberme hecho entender y me puedan colaborar impidiendo que se ingresen datos a esta celda...
1

1 respuesta

Respuesta
1
Lo usual es bloquear las celdas que no quieras que se modifiquen y dejar desbloqueadas el resto (desde menú Formato, Celdas, Proteger). Luego tenés que proteger la hoja (la contraseña es opcional) para que el bloqueo funcione.
Otra opción sería colocar una macro en el evento Selection_Change de esa hoja impidiendo que seleccionen esa celda. Desde el Editor, seleccioná con doble clic el objeto HOJA que sea la del formato y copiá esta rutina, ajustando la celda:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$2" Then Target.Offset(0, 1).Select
End Sub
Lo que hace esta rutina, es que si tratas de seleccionar la celda A2 se te posiciona en la siguiente (B2)
Hola Elsa.. muchas gracias por tu atención... pero lamentablemente no me sirve; en las dos opciones efectivamente no se puede modificar la celda ("lo que quería") pero de igual manera en las dos opciones se me daña la macro del consecutivo "no funciona!!! mira te explico: tengo un botón que al darle click ejecuta la siguiente macro:
Sub consecutivo()
Dim numConsec As Long
Dim strConsec As String
Range("H5").Select
Selection.NumberFormat = "@"
If IsEmpty(ActiveCell) Then
Range("H5").Value = "0000000000"
Else
numConsec = Val(Range("H5").Value) + 1
strConsec = Right("0000000000" & Trim(Str(numConsec)), 10)
Range("H5").Value = strConsec
End If
End Sub
... donde te podrás dar cuenta que necesita seleccionar dicha celda para funcionar.
Y la opción de proteger la hoja me genera el siguiente error:
-- Se ha producido el error '1004' en tiempo de ejecución:
Imposible asignar la propiedad NumberFormat de la clase Range.
... Espero me puedas ayudar y de nuevo muchísimas gracias por tu colaboración.
Por eso te dejé la 2da opción, la que no permite que la celda sea seleccionada, pero si podrás enviar valores desde tu macro.
Esta opción no requiere que la hoja se proteja.
Y tu macro adolece de algunos errores. Probá con estos cambios:
Sub consecutivo()
Dim numConsec As Long
Dim strConsec As String
Range("H5").Select
Selection.NumberFormat = "@"
If ActiveCell = "" And ActiveCell <> 0 Then
Range("H5").Value = "0000000000"    'esto no da formato salvo que ya hayas formateado con anterioridad
Else
numConsec = Val(Range("H5").Value) + 1
strConsec = Right("0000000000" & Trim(Str(numConsec)), 10)
Range("H5").Value = strConsec

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas