Usuário com melhor resposta
Excel 2007 VBA - HELP!

Pergunta
-
Boas a todos.
Estou prestes a concluir um trabalho muito importante, porém não tenho muita noção em VBA, então vamos lá:
Construí um planilha que possui um coluna com nome e outros dados que serão colhidos no ato do atendimento.
Quando eu digito o nome (dados) na célula e dou um enter (ou saio de outra forma, tanto faz), a célula fica bloqueada,
não sendo possível edição novamente nela e uma mensagem é exibida informando que a célula já está preenchida.
Criei um botão para limpar a célula, porém para fazer isso é solicitado ao digitador que informe uma senha, se correta o campo da célula fica limpo e pronto para correção.
O problema é que não estou conseguindo fazer um botão que apague a célula que está ativa, ou seja, tenho que criar um botão de apagar para cada célula de nome, e serão cadastrados vários nomes, sendo assim não fica viável fazer desta
forma, ou seja, preciso saber como faço para criar um código que quando for selecionado qualquer célula da planilha com algum dado já digitado, me informe a senha para apagar, mas tem que ser uma célula que muda sempre e não com endereço fixo para não ser necessário criar mil e tantos botões de limpar para cada campo.
Tentei ser o mais claro possível.
Por favor, se puderem me ajudar eu agradeço meus caros. Me parece que é algo simples mas não tenho conhecimento.
Att,
Sofonin.
Respostas
-
Tente algo como mostrado abaixo:
Sub fApagar() Const cstrSenhaPlanilha As String = "123" Const cstrSenhaParaApagar As String = "456" Dim str As String str = InputBox("Digite a senha para apagar o conteúdo desta célula:") If str <> cstrSenhaParaApagar Then MsgBox "Senha inválida!", vbCritical Else ActiveSheet.Unprotect cstrSenhaPlanilha ActiveCell.ClearContents ActiveSheet.Protect cstrSenhaPlanilha MsgBox "Célula apagada!" End If End Sub
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Sugerido como Resposta Felipe Costa GualbertoMVP, Moderator terça-feira, 31 de dezembro de 2013 23:22
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator terça-feira, 31 de dezembro de 2013 23:22
Todas as Respostas
-
Tente algo como mostrado abaixo:
Sub fApagar() Const cstrSenhaPlanilha As String = "123" Const cstrSenhaParaApagar As String = "456" Dim str As String str = InputBox("Digite a senha para apagar o conteúdo desta célula:") If str <> cstrSenhaParaApagar Then MsgBox "Senha inválida!", vbCritical Else ActiveSheet.Unprotect cstrSenhaPlanilha ActiveCell.ClearContents ActiveSheet.Protect cstrSenhaPlanilha MsgBox "Célula apagada!" End If End Sub
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Sugerido como Resposta Felipe Costa GualbertoMVP, Moderator terça-feira, 31 de dezembro de 2013 23:22
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator terça-feira, 31 de dezembro de 2013 23:22
-
Bom dia Felipe!
Muito obrigado pela atenção.
Eu coloquei o código nas propriedades da planilha, e ele só está funcionando
quando eu aperto o botão de compilar.
Dúvidas:
Preciso alterar as probriedades da célula e desmarcar a opção, para fazer
funcionar corretamente: fortamatar células>>proteção>>bloqueadas?
Onde na verdade eu insiro este código que tu me passastes, em um modulo ou no
código da planilha?
Como disse sou leigo em vba, na verdade estou aprendendo agora. Vou postar o
outro código que tenho para ver se consegue modificá-lo:
CODIGO DA CELULA
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If ActiveCell.Address = "$B$1" And ActiveCell.Value <> "" Then
MsgBox ("Este campo já foi preenchido")
ActiveCell.Offset(rowOffset:=1).Activate
End If
End SubCODIGO DO LABEL LIMPAR
Sub Rostofeliz1_Clique()
UserForm1.Show
End SubCODIGO DO BOTÃO LIMPAR
Private Sub CommandButton1_Click()
If TextBox1.Value = "123" ThenRange("b1").Value = ""
Range("b1").SelectElse
MsgBox ("Senha incorreta")
End If
Unload Me
End Sub
Bom. Este código aqui funciona, mas somente para a céula $B$1, mas preciso queapague não esta mas a célula qualquer que estiver ativa.
Aguardo retorno.
Obrigado.
Att,
Sofonin.
-
O código que propus funcionaria assim: você selecione um intervalo, clica num botão chamado, digamos, Limpar, e então pergunta-se a senha. Caso a senha inserida seja correta, a seleção é apagada. Era isso que você queria?
Felipe Costa Gualberto - http://www.ambienteoffice.com.br