¿Por qué me sale el error 1004 en tiempo de ejecución cuando la hoja esta protegida?

El error que me sale es el siguiente:

Se ha producido el error 1004 en tiempo de ejecución:
Error definido por la aplicación o el objeto

Si la hoja está desprotegida no hay problema, pero cuando la protejo e interactúo con la celda que está utilizando una macro sucede. La macro es la siguiente:

Private Sub CommandButton1_Click()

Dim StartTime, FinishTime, TotalTime, PauseTime

StopIt = False

ResetIt = False

If Range("K81") = 0 Then

  StartTime = Timer

  PauseTime = 0

  LastTime = 0

Else

  StartTime = 0

  PauseTime = Timer

End If

StartIt:

  DoEvents

  If StopIt = True Then

    LastTime = TotalTime

    Exit Sub

  Else

    FinishTime = Timer

    TotalTime = FinishTime - StartTime + LastTime - PauseTime

    TTime = TotalTime * 100

    HM = TTime Mod 100

    TTime = TTime \ 100

    hh = TTime \ 3600

    TTime = TTime Mod 3600

    MM = TTime \ 60

    SS = TTime Mod 60

    Range("K81").Value = Format(hh, "00") & ":" & Format(MM, "00") & ":" & Format(SS, "00") & "." & Format(HM, "00")

    If ResetIt = True Then

      Range("K81") = Format(0, "00") & ":" & Format(0, "00") & ":" & Format(0, "00") & "." & Format(0, "00")

      LastTime = 0

      PauseTime = 0

      End

    End If

    GoTo StartIt

  End If

End Sub

Private Sub CommandButton2_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

  StopIt = True

End Sub

Private Sub CommandButton3_Click()

  Range("K81").Value = Format(0, "00") & ":" & Format(0, "00") & ":" & Format(0, "00") & "." & Format(0, "00")

  LastTime = 0

  ResetIt = True

End Sub

Private Sub CommandButton4_Click()

End Sub

1 Respuesta

Respuesta
2

Debes desproteger la hoja antes de afectar la celda. Al finalizar la macro debes proteger nuevamente la hoja, por ejemplo:

[Hola Ana y bienvenida a todoexpertos!

Cambia "abc" por el password que tiene tu hoja

Private Sub CommandButton1_Click()
  Dim StartTime, FinishTime, TotalTime, PauseTime
  StopIt = False
  ResetIt = False
  If Range("K81") = 0 Then
    StartTime = Timer
    PauseTime = 0
    LastTime = 0
  Else
    StartTime = 0
    PauseTime = Timer
  End If
StartIt:
  DoEvents
  If StopIt = True Then
    LastTime = TotalTime
    Exit Sub
  Else
    '
    'Desproteger la hoja
    ActiveSheet.Unprotect "abc"
    '
    FinishTime = Timer
    TotalTime = FinishTime - StartTime + LastTime - PauseTime
    TTime = TotalTime * 100
    HM = TTime Mod 100
    TTime = TTime \ 100
    hh = TTime \ 3600
    TTime = TTime Mod 3600
    MM = TTime \ 60
    SS = TTime Mod 60
    Range("K81").Value = Format(hh, "00") & ":" & Format(MM, "00") & ":" & Format(SS, "00") & "." & Format(HM, "00")
    If ResetIt = True Then
      Range("K81") = Format(0, "00") & ":" & Format(0, "00") & ":" & Format(0, "00") & "." & Format(0, "00")
      LastTime = 0
      PauseTime = 0
      End
    End If
    '
    'Proteger la hoja
    ActiveSheet.Protect "abc"
    '
    GoTo StartIt
  End If
End Sub
'
Private Sub CommandButton2_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  StopIt = True
End Sub
'
Private Sub CommandButton3_Click()
  '
  'Desproteger la hoja
  ActiveSheet.Unprotect "abc"
  '
  Range("K81").Value = Format(0, "00") & ":" & Format(0, "00") & ":" & Format(0, "00") & "." & Format(0, "00")
  LastTime = 0
  ResetIt = True
  '
  'Proteger la hoja
  ActiveSheet. Protect "abc"
  '
End Sub

[Si te ayuda la respuesta, al final hay un botón para valorar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas