Notifications
Clear all

Macro pra bloqueio de celulas

13 Posts
3 Usuários
0 Reactions
2,259 Visualizações
(@edvaldo123)
Posts: 14
Active Member
Topic starter
 

Olá para todos, sou novato no fórum. Meu conhecimento sobre VBA é muito básico ainda, e estou tendo dificuldade em criar uma MACRO que insira uma linha abaixo editável em um determinado local da planilha. Abaixo segue o código.

Sub INSERIR()
ActiveSheet.Unprotect Password:="123"
With Rows(3).Cells.Locked = True
End With
With Rows(7)
    .Cells.Locked = True
    .Copy
    .Insert
    .Cells.Locked = False  
End With
Application.CutCopyMode = False
ActiveSheet.Protect Password:="123"
End Sub

Ele está criando uma nova linha editável abaixo da linha 7 da planilha em questão, porém eu precisava que essa nova linha editável permitisse edições somente entre as colunas "B" até a "G". No formato que estou utilizando ele insere uma nova linha abaixo da linha 7, porém ela fica editável da Coluna A até a última coluna da planilha. Resumindo preciso limitar essa nova linha que será criada através da MACRO, abaixo da linha 7, para que somente possa ser editado as células que estarão entre a coluna B até a coluna G.

Obrigado!

 
Postado : 28/02/2017 5:40 pm
Syrax
(@syrax)
Posts: 160
Estimable Member
 

Veja se isso te ajuda

Sub INSERIR()
ActiveSheet.Unprotect Password:="123"
With Rows(3).Cells.Locked = True
End With
With Rows(7)
.Cells.Locked = True
.Copy
.Insert
End With
Cells(8, 1).Locked = True
Range("B8:G8").Locked = False

Application.CutCopyMode = False
ActiveSheet.Protect Password:="123"
End Sub

Se te ajudar, clica no joinha do lado do "citar"

Se essa resposta te ajudou e resolveu o seu problema, clique no "joinha" ao lado de citar, e não esqueça de colocar o tópico como resolvido, clicando no ✓

 
Postado : 28/02/2017 7:27 pm
(@edvaldo123)
Posts: 14
Active Member
Topic starter
 

Syrax

Olá amigo, ajudou sim, porém vc poderia tentar me ajudar em outra linha desse código, observe que após executar a macro ela bloqueia a linha 3 da planilha, nessa linha 3 existe a célula B3, onde tem uma lista de dados com todos os meses do ano. Seria um campo pra pessoa escolher qual mês do ano se refere a planilha, pois ela é uma planilha de vendas mensais. Porém as vezes a célula B3 fica bloqueada e as vezes não, após a execução da Macro. O certo seria ela ficar desbloqueada após a abertura da planilha, e somente ser bloqueada após a execução dessa Macro, mas nem sempre da certo, as vezes a célula B3 fica bloqueada apos a execução e as vezes não!

 
Postado : 01/03/2017 7:34 am
Syrax
(@syrax)
Posts: 160
Estimable Member
 

Veja se isso te ajuda

Coloque em "Estapasta_de_trabalho" o código

Private Sub Workbook_Open()
ActiveSheet.Unprotect Password:="123"
Cells.Locked = True
Range("B3").Locked = False
ActiveSheet.Protect Password:="123"
End Sub

salve, e abra de novo

se isso te ajudou, clique no joinha ao lado de "citar"

Se essa resposta te ajudou e resolveu o seu problema, clique no "joinha" ao lado de citar, e não esqueça de colocar o tópico como resolvido, clicando no ✓

 
Postado : 01/03/2017 2:25 pm
(@edvaldo123)
Posts: 14
Active Member
Topic starter
 

Syrax

salve, e abra de novo

se isso te ajudou, clique no joinha ao lado de "citar"

Olá amigo, infelizmente o código não funcionou. Vou colar abaixo todas as linhas de código da minha pasta de trabalho, talvez assim fique mais fácil vc me ajudar.

Private Sub Workbook_Open()
Application.DisplayFullScreen = True
ActiveWorkbook.Protect Password:="123"
ActiveSheet.Protect Password:="123"
End Sub

Sub INSERIR()
ActiveSheet.Unprotect Password:="123"
With Rows(3)
Cells.Locked = True
End With

With Rows(7)
.Cells.Locked = True
.Copy
.Insert
End With
Cells(8, 1).Locked = True
Range("B8:G8").Locked = False

Application.CutCopyMode = False
ActiveSheet.Protect Password:="123"
End Sub


Sub NOVA_PLAN()
Dim UnprotectPW As String
UnprotectPW = InputBox(".: DIGITE SUA SENHA ")
ActiveWorkbook.Unprotect Password:=UnprotectPW
MsgBox " .: NOVA PLANILHA CRIADA COM SUCESSO! "
On Error Resume Next
Sheets("NEW PLAN").Copy After:=Sheets(ThisWorkbook.Worksheets.Count)
Set newSheet = ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
ActiveSheet.Name = InputBox(".: DIGITE O NOME DA SUA NOVA PLANILHA ")
ActiveWorkbook.Protect Password:="123"
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

On Error Resume Next
ThisWorkbook.Save

End Sub

Quanto ao problema do bloqueio da célula B3, acredito eu que não seja mais um problema no momento, porém percebi que a planilha as vezes protege a pasta de trabalho com a senha, e as vezes não, fiz o teste aqui 6 vezes, abrindo, salvando e fechando, e percebi que na metade das vezes ela protege a pasta de trabalho com a senha, e na outra metade ela não protege, muito estranho isso! Teria como vc analisar todos os códigos e me apresentar o problema, ou até mesmo substituir algumas linhas de comando por outras que sejam melhores. Na Macro NOVA_PLAN tem vários bugs também, quanto aparece a caixa box de perguntas, se eu clicar no botão cancelar, ela não cancela a operação e acaba dando um erro. Poderia me ajudar mais uma vez! Obrigado...

 
Postado : 01/03/2017 4:50 pm
Syrax
(@syrax)
Posts: 160
Estimable Member
 

Veja se isso te ajuda
pois ainda não entendi muito bem o que voce precisa

Private Sub Workbook_Open()
Application.DisplayFullScreen = False
ActiveSheet.Unprotect Password:="123"
Range("B3").Locked = False
ActiveWorkbook.Protect Password:="123"
ActiveSheet.Protect Password:="123"
End Sub

Sub INSERIR()
ActiveSheet.Unprotect Password:="123"
Rows(3).Cells.Locked = True

With Rows(7)
.Cells.Locked = True
.Copy
.Insert
End With
Cells(8, 1).Locked = True
Range("B8:G8").Locked = False

Application.CutCopyMode = False
ActiveSheet.Protect Password:="123"
End Sub


Sub NOVA_PLAN()
Dim UnprotectPW As String
UnprotectPW = InputBox(".: DIGITE SUA SENHA ")
If UnprotectPW <> "" Then
ActiveWorkbook.Unprotect Password:=UnprotectPW
MsgBox " .: NOVA PLANILHA CRIADA COM SUCESSO! "
Sheets("NEW PLAN").Copy After:=Sheets(ThisWorkbook.Worksheets.Count)
Set NewSheet = ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
ActiveSheet.Name = InputBox(".: DIGITE O NOME DA SUA NOVA PLANILHA ")
ActiveWorkbook.Protect Password:="123"
Else
Exit Sub
End If
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

On Error Resume Next
ThisWorkbook.Save

End Sub

quanto ao erro da range B3, coloca o código, salva e abre novamente
voce não tinha especificado que também tinha protegido o workbook

quanto ao bug do botão cancelar do inputbox, voce precisava colocar uma condição caso a variável não houvesse valor nenhum
pois, quando voce clica em cancelar a variável "UnprotectPW" é null.
Coloquei uma condição lá para verificar se "UnprotectPW" for null, então ele sai da sub

se isso te ajudou, clique no joinha ao lado de "citar"

Se essa resposta te ajudou e resolveu o seu problema, clique no "joinha" ao lado de citar, e não esqueça de colocar o tópico como resolvido, clicando no ✓

 
Postado : 01/03/2017 6:11 pm
(@edvaldo123)
Posts: 14
Active Member
Topic starter
 

Syrax

Olá amigo, o código continua com o mesmo erro, referente a célula B3, quando salvo o código e abro novamente a planilha, aparece um erro, acusando no depurador a linha abaixo.

Range("B3").Locked = False

E além desse erro, continua com o mesmo problema com a proteção da pasta de trabalho com senha, nem sempre quando fecho a planilha e abro novamente, a pasta de trabalho está protegida, as vezes sim e as vezes não. Se preferir te mando a planilha e vc faz as alterações por ai. Segue o link da planilha hospedada no meu One Drive.

https://1drv.ms/x/s!ApySGf1Tx_nOgq9dnyHlG9VI2iKftg

 
Postado : 02/03/2017 3:42 pm
Syrax
(@syrax)
Posts: 160
Estimable Member
 

Anexa a planilha aqui usando a opção "adicionar um anexo"

Se essa resposta te ajudou e resolveu o seu problema, clique no "joinha" ao lado de citar, e não esqueça de colocar o tópico como resolvido, clicando no ✓

 
Postado : 02/03/2017 4:52 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Edvaldo

Como você é novato no fórum, para facilitar a tua participação, sugiro tomar conhecimento do conteúdo dos links abaixo:
viewtopic.php?f=7&t=203
viewtopic.php?f=7&t=7903
viewtopic.php?f=7&t=3841
viewtopic.php?f=7&t=16757
viewtopic.php?f=7&t=12600
viewtopic.php?f=7&t=3371

[]s

Patropi - Moderador

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 02/03/2017 6:50 pm
(@edvaldo123)
Posts: 14
Active Member
Topic starter
 

Anexa a planilha aqui usando a opção "adicionar um anexo"

Segue a planilha em anexo compactada.

Aguardo!

Obrigado...

 
Postado : 03/03/2017 10:02 am
Syrax
(@syrax)
Posts: 160
Estimable Member
 

Fiz os testes e tudo deu certo
a planilha todas as vezes quando abri, mesmo salvando, estava protegida

quanto ao botão cancelar, também estava funcionando

agora, quanto a range B3, o problema estava quando voce clicava em "adicionar campo", nele, quando voce desbloqueava a planilha
ele deixava a linha 3, bloqueada para edição, e logo depois quando voce fechava, e abria novamente, a range B3 estava bloqueada, pois voce bloqueou ela por ultimo

eu deixei o código assim

Private Sub Workbook_Open()
Application.DisplayFullScreen = True
ActiveWorkbook.Unprotect Password:="123"
ActiveSheet.Unprotect Password:="123"
Rows(3).Locked = False
ActiveWorkbook.Protect Password:="123"
ActiveSheet.Protect Password:="123"
End Sub

Sub INSERIR()
ActiveSheet.Unprotect Password:="123"
Rows(3).Locked = True
With Rows(7)
.Cells.Locked = True
.Copy
.Insert
End With
Cells(8, 1).Locked = True
Range("B8:G8").Locked = False

Application.CutCopyMode = False
ActiveSheet.Protect Password:="123"
End Sub

Já que voce quer que a linha 3 fique bloqueada logo quando clicar em "adicionar campo", mas que ela fique editavel quando abrir a planilha
fiz a edição de deixar o Rows(3).Locked = False no inicio e Rows(3).Locked = True na sub inserir

veja se é isso que voce precisa, tente em uma nova planilha, faça os testes e depois volte aqui e diga se deu certo

se isso te ajudou, clique no joinha ao lado de "citar"

Se essa resposta te ajudou e resolveu o seu problema, clique no "joinha" ao lado de citar, e não esqueça de colocar o tópico como resolvido, clicando no ✓

 
Postado : 03/03/2017 6:30 pm
(@edvaldo123)
Posts: 14
Active Member
Topic starter
 

Fiz os testes e tudo deu certo
a planilha todas as vezes quando abri, mesmo salvando, estava protegida

quanto ao botão cancelar, também estava funcionando

agora, quanto a range B3, o problema estava quando voce clicava em "adicionar campo", nele, quando voce desbloqueava a planilha
ele deixava a linha 3, bloqueada para edição, e logo depois quando voce fechava, e abria novamente, a range B3 estava bloqueada, pois voce bloqueou ela por ultimo

eu deixei o código assim

Private Sub Workbook_Open()
Application.DisplayFullScreen = True
ActiveWorkbook.Unprotect Password:="123"
ActiveSheet.Unprotect Password:="123"
Rows(3).Locked = False
ActiveWorkbook.Protect Password:="123"
ActiveSheet.Protect Password:="123"
End Sub

Sub INSERIR()
ActiveSheet.Unprotect Password:="123"
Rows(3).Locked = True
With Rows(7)
.Cells.Locked = True
.Copy
.Insert
End With
Cells(8, 1).Locked = True
Range("B8:G8").Locked = False

Application.CutCopyMode = False
ActiveSheet.Protect Password:="123"
End Sub

Já que voce quer que a linha 3 fique bloqueada logo quando clicar em "adicionar campo", mas que ela fique editavel quando abrir a planilha
fiz a edição de deixar o Rows(3).Locked = False no inicio e Rows(3).Locked = True na sub inserir

veja se é isso que voce precisa, tente em uma nova planilha, faça os testes e depois volte aqui e diga se deu certo

se isso te ajudou, clique no joinha ao lado de "citar"

Olá amigo, deu certo sim! Obrigado mais uma vez, e aproveitando a oportunidade, teria como vc me enviar uma Macro pra salvar em PDF, eu utilizo uma aqui em outra planilha, porém essa macro que utilizo, tem que especificar a celula inicial até a celula final onde ela vai salvar em PDF, e no caso dessa planilha de vendas que utilizo no momento, não tem como saber qual será a celula final, pois novos campos estão sempre sendo adicionados até chegar ao final do mês, e assim poder salvar em PDF e arquivar. Se puder também me envie um código que converta tudo que está digitado na planilha para letras maiúsculas, pois ja utilizo um código em outra planilha que faz isso, porém ele trabalha parecido com a macro de salvar em PDF, tem que especificar a celula inicial e a celula final que será convertido para letras maiúsculas.

Aguardo!

 
Postado : 06/03/2017 4:41 pm
Syrax
(@syrax)
Posts: 160
Estimable Member
 

Segue em anexo
veja se isso te ajuda

quanto a maiúscula, sugiro que voce use o script que você já tem, a menos que você especifique uma area onde as letras serão transformadas em maiúsculas
pois o excel possui mais de 100 mil linhas, imagine selecionar todas elas e rodar o script, mesmo elas estando vazias o script iria demorar...
se voce especificar uma area, exemplo A1:Z100, ficaria mais viável

se isso te ajudou, clique no joinha ao lado de "citar"

Se essa resposta te ajudou e resolveu o seu problema, clique no "joinha" ao lado de citar, e não esqueça de colocar o tópico como resolvido, clicando no ✓

 
Postado : 06/03/2017 5:53 pm