Ir ao conteúdo

Excel Desbloquear um grupo célula no inicio de uma macro e bloquear no final da macro


Ir à solução Resolvido por OreiaG,

Posts recomendados

Postado

Boa noite galera.

 

Preciso da ajuda de vocês. Tenho uma planilha que é toda bloqueada, mas com 3 colunas desbloqueadas, só que tem dois grupos de células (de Z8:Z42) e (AB8:AB42) que eu queria que desbloqueasse no inicio da macro e bloqueasse no final da macro. Já tô há dias tentando de todo jeito e não consigo. Se alguém tiver disponibilidade pra me ajudar, ficaria grato.

Código abaixo:

Private Sub BTNOK_Click()
                        'PROTEGER PLANILHA
    Dim planilha As Worksheet
    Dim intervalo As Range
    Dim senha As String
    
     'Defina a planilha e o intervalo de células que deseja desproteger
    Set planilha = ThisWorkbook.Worksheets("Geral")
    Set intervalo = planilha.Range("Z8:AB42") ' Substitua pelo intervalo desejado
    'Set intervalo = planilha.Range("AB8:AB42")
    
     'Desprotege o intervalo de células
    senha = "0" ' Substitua pela senha desejada ou deixe em branco se não houver senha
    planilha.Unprotect senha
    intervalo.Locked = False
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
                            'MACRO
    Dim Acumulado   As Range
    Dim Leitura     As Range
     
    Set Acumulado = [Z8]
    
    If Acumulado.Value <> "" Then
        Set Acumulado = Acumulado(0).End(xlDown)(2)
    End If
    
    Acumulado.Value = TXTleitura.Value
    Acumulado(, 3).Value = TXTdata.Value
    
    Set Leitura = [I6]
    
    If Leitura.Value <> "" Then
        Set Leitura = Leitura(0).End(xlDown)(2)
    End If
    
    Leitura.Select
    
   Unload UserForm3
   '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
   
   
    'Worksheets("Geral").Range("Z8:Z42").Locked = True
    'Worksheets("Geral").Range("AB8:AB42").Locked = True
    
    planilha.Protect senha
    'intervalo.Locked = True

End Sub

 

Obs.: As linhas comentadas são minhas tentativas

 

De já meus agradecimentos

 

Postado
15 horas atrás, paulocezarpicos disse:

... só que tem dois grupos de células (de Z8:Z42) e (AB8:AB42) que eu queria que desbloqueasse no inicio da macro e bloqueasse no final da macro.

 

O bloqueio de células é ativado automaticamente ao proteger a planilha e é desativado automaticamente ao desproteger a planilha, não é necessário que a macro faça isso.

  • Curtir 1
Postado

Marque manualmente como "Bloqueadas" as células dos intervalos Z8:Z42 e AB8:AB42, reescreva o seu código conforme a estrutura  abaixo.

 

Sub Private Sub BTNOK_Click()
 Sheets("Geral").Unprotect
 ' coloque aqui as ações do seu código
 ' não coloque comandos para Desbloquear/Bloquear células
 Sheets("Geral").Protect
End Sub

 

  • Curtir 1
Postado

Boa noite OreiaG.

 

Foi por causa desse erro que procurei outras alternativas. Acho que não desprotege. Quando preencho o formulario para preenchimento da planilha aparece uma caixa de diálogo para informar a senha, veja a figura abaixo:

 

 

Pede Senha da Planilha.jpg

Postado
15 horas atrás, paulocezarpicos disse:

...  aparece uma caixa de diálogo para informar a senha, ...

 

Obviamente, se você protegeu a planilha com senha, precisa colocar a senha no código.
 

Sheets("Geral").Unprotect 123   'senha numérica dispensa aspas

Sheets("Geral").Unprotect "abc"   'senha não numérica exige aspas

 

Quanto ao terceiro problema apontado, só vendo o seu arquivo, e as informações sobre o que você pretende.

  • Curtir 1
Postado
12 horas atrás, paulocezarpicos disse:

Vou enviar a planilha pra ver se você me ajuda.

 

Faltou você informar qual a ajuda que você quer nesse arquivo que você anexou, que não tem macros, não tem UserForm e a planilha está protegida com senha.

Postado

 

No último arquivo o erro não ocorre na linha que você apontou, e sim nesta linha >>> Acumulado(, 3).Value = TXTdata.Value

E ocorre pela seguinte razão: ao executar a linha que você apontou, a execução é desviada para o código Worksheet_Calculate da planilha Geral.

Esse código desprotege a planilha, o que é desnecessário pois ela já está desprotegida, e ao final protege a planilha. Aqui a origem do problema. Em seguida a execução retorna para o código Sub BTNOK_Click, e ao tentar executar o comando que coloquei acima em azul, a planilha estará bloqueada, por isso ocorre o erro.

 

Basta excluir a linha que protege a planilha no código Worksheet_Calculate. A propósito, o código Worksheet_Calculate pode ser substituído pela Formatação manual das células >>> Formatar células / Número / Número.

Idem para o código Worksheet_Calculate existente na outra planilha. Assim você poderá anunciar ambos na "OLX". 😉


O seu comando que citei acima insere a data no formato mm/dd/aaaa, e caso você queira alterar para dd/mm/aaaa, substitua por este >>> Acumulado(, 3).Value = Format(TXTdata.Value, "mm/dd/yyyy")

  • Curtir 1
Postado

Aqui não ocorre esse erro.

 

Tente marcar um ponto de interrupção no código Sub BTNOK_Click e a partir dali execute o código via F8 e tente descobrir a origem do erro.

Pode ser que a planilha não está sendo desprotegida pelo código Sub BTNOK_Click.

 

Outra forma de verificar é marcar um ponto de interrupção no Worksheet_Calculate, clicar em uma célula com valor, apertar F2 depois Enter e executar via F8.

 

Marcar Ponto de Interrupção no Código

Postado

OreiaG.

Esse erro sempre aparece quando tiro a proteção do código Worksheet_Calculate. E quando uso a proteção aparece aquele erro no código BTNOK_Click.

 

Se não está aparecendo nenhum erro na sua planilha então mande ela pra mim, só assim não vou usar mais o seu tempo. Concorda??

 

Postado
46 minutos atrás, paulocezarpicos disse:

Se não está aparecendo nenhum erro na sua planilha ...

 

 

Aqui não ocorre erro na sua planilha.

Baixei o arquivo do post #10, fiz o teste e ocorre erro na linha abaixo, pelo motivo que comentei antes.

Acumulado(, 3).Value = TXTdata.Value 'erro nesta linha

 

"Basta excluir a linha que protege a planilha no código Worksheet_Calculate." >>> depois de excluir essa linha, conforme comentei antes, não ocorre qualquer erro e o código executa de boa (na sua planilha).

  • Curtir 1
Postado

Pois deu problema agora. Se retiro a linha de proteção do código Worksheet_Calculate, dá o erro que lhe mostrei no Post #12. Se uso a linha de proteção no código Worksheet_Calculate dá erro, conforme mostrei no Post #6. Mas não dá erro com você. Então não sei mais o que fazer. Vamos deixar pra lá. Não vamos ficar aqui trocando mensagens e você perdendo tempo, né mesmo??

  • Solução
Postado
10 horas atrás, paulocezarpicos disse:

Então não sei mais o que fazer.

 

Última tentativa. Segue cópia do seu arquivo, conforme comentei no Post  #15.

 

Reforçando que a execução dos seus dois códigos Worksheet_Calculate, em decorrência da execução do código Sub BTNOK_Click, é desperdício de tempo e de energia: Post #11, segundo período do terceiro parágrafo.

 

 

Teste LEITURA2.rar

Postado

Bom dia OreiaG.

kkkkkkk tá difícil né?? Baixei a planilha que você me enviou e veja o acontece:

 

Com essa linha desativada:

  Plan17.Protect "0" '$$$$$$$$$$$$$$$$$$$$$$$  DESATIVEI ESTA LINHA
Quando digito na planilha ela desabilita a proteção.

Quando preencho o FORM alimentando as colunas Z e AB dá erro nesta linha:

    Acumulado(, 3).Value = Format(TXTdata.Value, "mm/dd/yyyy") ' $$$$$$$$$$$$  ACRESCENTEI "Format"
 

Confio em você....fico no aguardo

Postado

Desisto, amigo. Como eu disse antes, foi a última tentativa.

 

Como esse último problema que ocorre aí não tem ligação com o problema que você abriu este tópico, talvez se você iniciar um novo tópico com o problema atual, algum outro usuário consiga lhe ajudar.

  • Curtir 1
Postado

Ok OreiaG. Mesmo assim lhe agradeço por tentar me ajudar

Pronto. Seguindo sua orientação, desisti do código Worksheet_Calculate e a planilha funcionou normalmente. Muito obrigado pelo seu tempo, pela disposição em me ajudar e até a próxima 

Pronto. Seguindo sua orientação, desisti do código Worksheet_Calculate e a planilha funcionou normalmente. Muito obrigado pelo seu tempo, pela disposição em me ajudar e até a próxima 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!