Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Deletando Uma Sub Rotina Via Comando


FabianoCRZ

Pergunta

Caros amigos :

Gostaria de saber como faço para criar uma sub rotina que delete outra.

Tentei o seguinte mas não deu certo :

Private Sub CommandButton2_Click()

Dim a

a = "teste"

If TxtSenha <> a Then

MsgBox "SENHA INVÁLIDA", vbQuestion, "AVISO"

TxtSenha = ""

TxtSenha.SetFocus

Else

Unload Me

End If

Clear workbook_open()

Nesse exemplo eu criei uma userform que pede uma senha (teste), se a senha digitada na textbox (txtsenha) for igual eu gostaria que fosse apagado uma subrotina, nesse caso uma subrotina que inicia ao abrir a planilha ( workbook_open() )

Vou tentar ser um pouco mais claro para facilitar a ajuda de vocês: imaginemos que criei dois botões e uma textbox em uma userform. Em um dos botões fiz a seguinte programação :

Private Sub CommandButton1_Click()

Sheets("Plan1").Range("A1").Value = TextBox1.Text

End Sub

Agora eu gostaria de colocar um comando no outro botão que quando clicado apagasse toda a sub rotina criada acima, ou seja, seria deletado todo o comando de forma que não exista mais.

Como faço isso meus amigos? :huh:

Mais uma vez muito obrigado!!!

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Bem, não sei se é possível apagar uma parte do código com outra sub-rotina, eu creio que não seja.

Por que você não faz uma validação?

Exemplificando melhor:

-No evento CommandButton2_Click() ele pede a senha, caso forneçam uma senha incorreta ele colocará o valor 1 na célula IV65536, caso coloque a senha correta coloque o valor 0.

-No evento workbook_open() você cria uma condição, onde o código será executado se IV65536 for igual a 0.

Entendeu a idéia?

Link para o comentário
Compartilhar em outros sites

  • 0
Caro amigo Renato:

Muito obrigado pela sua atenção, vou tentar fazer a dica que você me deu e postarei aqui o resultado.

Muito obrigado!!! :)

Amigos Renato e amigos do Fórum:

Usei como idéia principal a dica que o Renato me deu. Fiz o seguinte : ao iniciar o arquivo é executado o seguinte comando :

Private Sub Workbook_Open()
ActiveWindow.WindowState = xlMinimized       ' Minimiza a planilha

If Sheets("BD-FUNC").Range("IV65535").Value = "" Then

Dim dataatual, a, b, c

Sheets("BD-FUNC").Select

ActiveSheet.Unprotect Password:="senha" ' Desprotege a planilha com senha

Sheets("BD-FUNC").Range("IV65535").Value = Date ' Coloca na célula IV65535 a data em que se acessou a primeira vez o arquivo
End If
a = Sheets("BD-FUNC").Range("IV65536").Value
b = Sheets("BD-FUNC").Range("IV65535").Value
c = b + 30 'Soma mais 30 dias na data do primeiro acesso
dataatual = Date

If dataatual >= c Then
Sheets("BD-FUNC").Select

ActiveSheet.Unprotect Password:="senha"

Sheets("BD-FUNC").Range("IV65536").Value = 1

ActiveSheet.Protect Password:="senha", DrawingObjects:=True, Contents:=True, Scenarios:=True

ActiveWorkbook.Save


MsgBox "A VALIDADE DESSA PLANILHA VENCEU"

frmsenha2.Show ' Chama uma userform para ser digitado um código de ativação
End If


If a = 1 Then
MsgBox "A VALIDADE DESSA PLANILHA VENCEU"
frmsenha2.Show
End If

FrmSenha.Show
Na userform para digitar o código de ativação fiz o seguinte : Programação da própria userform:
Private Sub UserForm_QueryClose _
  (Cancel As Integer, CloseMode As Integer)
    If CloseMode = vbFormControlMenu Then
        MsgBox "POR FAVOR DIGITE O CÓDIGO DE ATIVAÇÃO", vbCritical, "AVISO"
        Cancel = True
    End If
End Sub
Programação do botão :
Private Sub CommandButton1_Click()
Dim a
a = "MKLPOI-FRTUJH-CCVFGF-F58FD8-54KLR"
    If TextBox1 <> a Then
    MsgBox "CÓDIGO DE ATIVAÇÃO INVÁLIDO", vbQuestion, "AVISO"
    TextBox1 = ""
    TextBox1.SetFocus
    Else
    Unload Me
    Sheets("BD-FUNC").Select
ActiveSheet.Unprotect Password:="senha"
    Sheets("BD-FUNC").Range("IV65536").Value = 2
   ActiveSheet.Protect Password:="senha", DrawingObjects:=True, Contents:=True, Scenarios:=True
   End If

End Sub

Com essa programação o que acontece é o seguinte: se a pessoa abrir a primeira vez o arquivo no dia 17/11/07, esta data é gravada automaticamente na céula IV65535 e o arquivo é salvo automaticamente, para que se a pessoa voltar a data no relógio do windows a tela de ativação continuará aparecendo. É somado mais 30 dias à data do primeiro acesso, ou seja, o valor é 17/12/2007. A condição para expirar o arquivo é se a data atual for maior ou igual a 17/11/2007 + 30 ( 17/12/2007) irá chamar a userform com o nome frmsenha2 .

Se o código for o correto será gravado na célula IV65536 o valor 2. A condição para o arquivo se tonar "full" é o valor da célula IV65536 ser diferente de vazio ou diferente de 1. Se for 2 a tela de ativação não mais será exibida.

Não sei se deu para entender, mas a idéia do Renato funcionou melhor que eu esperava.

Por isso que eu sempre digo, duas cabeças pensam melhor que uma!!!

Abraço a todos!!!!

Editado por RenatoMejias
Adicionar code
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...