Notifications
Clear all

Bloqueio de data e hora automatico

9 Posts
4 Usuários
0 Reactions
1,448 Visualizações
(@danilodga)
Posts: 15
Active Member
Topic starter
 

boa tarde.

Gostaria de adicionar um comando, onde posso está bloqueando uma hora e data automático após se preenchidas. Assim para que ninguém possa mexer.
segue abaixo o código que estou utilizando no momento.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 3 Then
    Cells(Target.Row, 2).Value = Format(Date, ”d - mmm - yy”)
   End If
End Sub
 
Postado : 05/07/2016 1:38 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Protege a planilha.

Desbloquando as demais colunas

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 05/07/2016 3:02 pm
(@danilodga)
Posts: 15
Active Member
Topic starter
 

Protege a planilha.

Desbloqueando as demais colunas

isso ainda não resolveria meu problema. Pq minha planilha, ela eh de solicitação de serviços, então o usuário, ele não pode modificar a "data" quando o preenchimento eh feito de forma automática. efetuei alguns testes que conseguir burlar. mas gostaria de complementar na aquele código acima, um bloqueo assim que ela gerar a "data do dia".

 
Postado : 05/07/2016 5:08 pm
(@miguel-70)
Posts: 207
Estimable Member
 

Ola boa noite! poste um modelo da sua ideia para melhor compreensão talvez possamos ti ajudar porque tive problema parecido e conseguir resolver.

 
Postado : 06/07/2016 3:53 pm
(@danilodga)
Posts: 15
Active Member
Topic starter
 

Ola boa noite! poste um modelo da sua ideia para melhor compreensão talvez possamos ti ajudar porque tive problema parecido e conseguir resolver.

Bom dia
Segue o anexo da planilha.

Venho tentando adaptar esse código:

Cells(Target.Row, 2).Value = Format(Date, ”d - mmm - yy”)

nesse aqui:

Private Sub Worksheet_Change(ByVal Target As Range)
'Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Application.CountA(Cells(Target.Row, 2).Resize(, 5)) = 5 Then
ActiveSheet.Protect UserInterfaceOnly:=True
 If MsgBox("Deseja salvar sua solicitação " & "?", vbYesNo + vbQuestion) = vbYes Then
   Cells(Target.Row, 2).Resize(, 5).Locked = True
   Cells(Target.Row, 2).Resize(, 5).Interior.ColorIndex = x1None
   Cells(Target.Row, 2).Resize(, 5).Select
   ActiveWorkbook.Save
 Else: Cells(Target.Row, 2).Resize(, 5).Interior.ColorIndex = 6
 End If
End If
End Sub

mas conseguindo bloquear a data, já está ótimo.

 
Postado : 07/07/2016 5:44 am
(@mprudencio)
Posts: 2749
Famed Member
 

Como eu disse anteriormente, basta proteger a planilha....

Veja se é assim

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 07/07/2016 8:27 am
(@miguel-70)
Posts: 207
Estimable Member
 

O modelo em anexo bloqueia para apagar depois de trinta minutos ai depois desse tempo é preciso da senha do administrador que é "zero"
Se o usuário mudar a data ou a horas do PC ele não vai conseguir apagar, somente com a senha "0"
Para apagar baseia-se na data e horas que foi digitado e pode ficar oculto também.
Não esqueça de bloquear a visualização dos códigos.
Se ti atender é preciso criar mais opção para o administrador, se vc não conseguir aperfeiçoar nos avisar.

 
Postado : 08/07/2016 7:56 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Olá, Danilo.

Como vc não deseja bloquear a coluna Data para evitar que seja editada, que seria a melhor opção como já descrito pelos colegas, uma alternativa seria assim.
Acrescente no Worksheet_Change essas linhas marcadas abaixo

Private Sub Worksheet_Change(ByVal Target As Range)
  'Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Application.CountA(Cells(Target.Row, 2).Resize(, 5)) = 5 Then
     ActiveSheet.Protect UserInterfaceOnly:=True
     If MsgBox("Deseja salvar sua solicitação " & "?", vbYesNo + vbQuestion) = vbYes Then
        Cells(Target.Row, 2).Resize(, 5).Locked = True
        Cells(Target.Row, 2).Resize(, 5).Interior.ColorIndex = x1None
        Cells(Target.Row, 2).Resize(, 5).Select
        ActiveWorkbook.Save
     Else: Cells(Target.Row, 2).Resize(, 5).Interior.ColorIndex = 6
     End If
  End If
 '---------------------------------------------------------------
  If (Target.Column = 2) And (Target.Value <> "") Then
     MsgBox "A data não pode ser alterada manualmente"
     Application.EnableEvents = False
       Application.Undo
     Application.EnableEvents = True
  End If
 '----------------------------------------------------------------
End Sub

E insira essas duas linhas no Worksheet_SelectionChange que vc já possui.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Column = 3 Then
    Application.EnableEvents = False
      Cells(Target.Row, 2).Value = Format(Date, ”d - mmm - yy”)
    Application.EnableEvents = True
  End If
End Sub

 
Postado : 08/07/2016 10:17 pm
(@danilodga)
Posts: 15
Active Member
Topic starter
 

Boa tarde
Desculpa pela demora e obrigado pela contribuição. Testei todos e o que não ocorreu erro, foi o código abaixo do MPrundecio.

Como eu disse anteriormente, basta proteger a planilha....

Veja se é assim

Para ficar perfeito, só preciso de alguma maneira selecionar as 5 células que foram preenchidas quando clico em "ok", pois com o novo código, acaba não selecionando mais. segue abaixo a planilha completa.

Private Sub Worksheet_Change(ByVal Target As Range)
'Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Application.CountA(Cells(Target.Row, 2).Resize(, 5)) = 5 Then
ActiveSheet.Protect UserInterfaceOnly:=True
 If MsgBox("Deseja salvar sua solicitação " & "?", vbYesNo + vbQuestion) = vbYes Then
   Cells(Target.Row, 2).Resize(, 5).Locked = True
   Cells(Target.Row, 2).Resize(, 5).Interior.ColorIndex = x1None
   Cells(Target.Row, 2).Resize(, 5).Select
   ActiveWorkbook.Save
 Else: Cells(Target.Row, 2).Resize(, 5).Interior.ColorIndex = 6
 End If
End If
End Sub

esse código abaixo, eh o responsável de selecionar as 5 células quando eu confirmo com "ok" os preenchimentos. Pois assim, com as 5 células selecionadas, eu clico em "enviar solicitação", onde ele faz uma copia e cola de forma automatica no corpo de email.

Cells(Target.Row, 2).Resize(, 5).Select

Preciso de forma um código que permita a seleção das 5 células antes de ela bloquear.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim WU As Worksheet


Set WU = Sheets("USUÁRIOS")

WU.Unprotect

If Target.Column = 3 Then
    WU.Cells(Target.Row, 2).Value = Format(Date, ”d - mmm - yy”)
    End If
    
WU.Protect
End Sub
 
Postado : 13/07/2016 9:16 am