Página 1 de 1

Bloquear Células após serem preenchidas

Enviado: 24 Jun 2022 às 15:19
por leowp
Boa tarde, estou com dificuldade em realizar o bloqueio de algumas células.
Elaborei uma planilha básica para cadastro de fornecedores da empresa em que trabalho.
O objetivo é que ao topo dela estejam liberados os campos para realizar o cadastro dos fornecedores mas que depois não seja possível deletá-los sem autorização.
Tentei utilizar um código VBA que encontrei mas não resolveu o meu problema, agradeço se alguém puder me auxiliar.

Re: Bloquear Células após serem preenchidas

Enviado: 25 Jun 2022 às 10:30
por osvaldomp
Olá, @leowp .

O código abaixo replica os dados de A4:F4 na Tabela, ordena a Tabela e limpa A4:F4.

Antes de testar bloqueie as células da planilha e desbloqueie somente A4:F4.
#
Código: Selecionar todos
Sub CadastraProdutoOrdenaTabela()
 Dim LR As Long
  Application.ScreenUpdating = False
  ActiveSheet.Unprotect "123" 'altere a senha se desejar
  Range("A4:F4").Copy
  With ActiveSheet.ListObjects("Tabela2")
   LR = .Range.Columns(1).Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
   Cells(LR + 1, 1).PasteSpecial xlValues
   .Sort.SortFields.Clear
   .Range.Sort key1:=.ListColumns(1), order1:=xlAscending, _
    Header:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
  End With
  Range("A4:F4").Value = ""
  ActiveSheet.Protect "123" 'altere a senha aqui também se desejar
End Sub


Re: Bloquear Células após serem preenchidas

Enviado: 27 Jun 2022 às 16:15
por leowp
Olá @osvaldomp ! Muito obrigado pela ajuda, funcionou perfeitamente.
No entanto, existe alguma maneira de bloquear a visualização do código da Macro? Para que não seja possível visualizar pelo código dela a senha da Planilha?

Re: Bloquear Células após serem preenchidas

Enviado: 27 Jun 2022 às 20:06
por osvaldomp
Olá, @leowp .

Para proteger o Projeto VBA:
abra o editor de VBA (Alt+F11) | menu Ferramentas | Propriedades de VBAProject | Proteção

Re: Bloquear Células após serem preenchidas

Enviado: 28 Jun 2022 às 08:06
por leowp
Mais uma vez @osvaldomp muito obrigado! Resolveu o meu problema.

Re: Bloquear Células após serem preenchidas

Enviado: 28 Jun 2022 às 08:33
por leowp
Peço desculpas pelas perguntas de iniciante kkk, mas para liberar a opção de uso de filtros dinâmicos, eu vi por outro macro que fiz que seria necessário adicionar alguns argumentos

Fiz desta forma e funcionou, gostaria de saber se está correto ou se há necessidade de alguma alteração
Código: Selecionar todos
Sub CadastraProdutoOrdenaTabela()
 Dim LR As Long
  Application.ScreenUpdating = False
  ActiveSheet.Unprotect "123"
  Range("A4:F4").Copy
  With ActiveSheet.ListObjects("Tabela2")
   LR = .Range.Columns(1).Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
   Cells(LR + 1, 1).PasteSpecial xlValues
   .Sort.SortFields.Clear
   .Range.Sort key1:=.ListColumns(1), order1:=xlAscending, _
    Header:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
  End With
  Range("A4:F4").Value = ""
  ActiveSheet.Protect "123", DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFiltering:=True, AllowUsingPivotTables:=True
     

End Sub

Re: Bloquear Células após serem preenchidas

Enviado: 28 Jun 2022 às 09:11
por osvaldomp
leowp escreveu: ... qual a posição que devo inserir o AllowFiltering:True, ?
Duas boas fontes que poderão lhe ajudar em algumas das suas futuras dúvidas: o recurso Gravar Macro do Excel e o Sábio Google. ;)
Experimente:
ActiveSheet.Protect Password:="123", AllowFiltering:=True