none
Excel 2007 VBA - HELP! RRS feed

  • 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.

    sexta-feira, 21 de junho de 2013 20:17

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

    sábado, 22 de junho de 2013 12:09
    Moderador

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

    sábado, 22 de junho de 2013 12:09
    Moderador
  • 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 Sub

    CODIGO DO LABEL LIMPAR

    Sub Rostofeliz1_Clique()
    UserForm1.Show
    End Sub

    CODIGO DO BOTÃO LIMPAR

    Private Sub CommandButton1_Click()
    If TextBox1.Value = "123" Then

       Range("b1").Value = ""
       Range("b1").Select

    Else

       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 que

    apague não esta mas a célula qualquer que estiver ativa.

     

    Aguardo retorno.

    Obrigado.

    Att,

    Sofonin.

    segunda-feira, 24 de junho de 2013 11:58
  • 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

    quarta-feira, 26 de junho de 2013 11:38
    Moderador