Notifications
Clear all

senha que muda todo dia e de acordo com o usuário

14 Posts
1 Usuários
0 Reactions
2,446 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Estou usando a Sub Get_Computer_Name(),que busca data ,user ,n° maquina e coloca os como valor de CA , CB , CC na primeira linha vazia ,onde o user se dá pela matricula do usuário , que é no formato 00000(5 digitos) , preciso o seguite ; faço alguns calculos com o user na célula CD , que me retorna um valor sempre numérico,(por exemplo pego o user 12345 divido por 2 e somo a hoje() (valor resultado =47205 não é 47204.5 pois está formatado como numero sem casas decimais) este numero será uma senha de acesso a ser usada em um FORM . conforme codigo Private Sub CmdOk_Click() tambem abaixo;onde estão especificado minhas duvidas.

Sub Get_Computer_Name()
Dim a1 As String
a1 = Now ' PORQUE EM ALGUMAS MAQUINAS VEM NO FORMATO dd/mm/aaaa e outras no formato mm/dd/aaaa?
Dim Comp_Name_B As String * 255
Dim Comp_Name As String
GetComputerName Comp_Name_B, Len(Comp_Name_B)
Comp_Name = Left(Comp_Name_B, InStr(Comp_Name_B, Chr(0)))
Dim lpBuff As String * 25
Dim ret As Long, UserName As String
ret = GetUserName(lpBuff, 25)
UserName = Left(lpBuff, InStr(lpBuff, Chr(0)) - 1)
Plan5.Range("CA65000").End(xlUp).Offset(1, 0).Value = a1
Plan5.Range("CA65000").End(xlUp).Offset(0, 1).Value = UCase(UserName)
Plan5.Range("CA65000").End(xlUp).Offset(0, 2).Value = Comp_Name
Plan5.Range("CA65000").End(xlUp).Offset(0, 3).FormulaLocal = "=(DIREITA(CB2;5)/2)+HOJE()"
END SUB

Como escrever para se "SENHA" for igual a CD o codigo rodar?
Private Sub CmdOk_Click()
If TextBoxPassw = "SENHA" Then ' ESTA É A DUVIDA
Unload Me
frmCad.Show
Else
If TextBoxPassw = "" Then
MsgBox "Digite Uma Senha Válida"
TextBoxPassw.Text = ""
TextBoxPassw.SelStart = 0
TextBoxPassw.SetFocus
Else
MsgBox "Senha Inválida"
TextBoxPassw.Text = ""
TextBoxPassw.SelStart = 0
TextBoxPassw.SetFocus
End If
End If
End Sub

Muito obrigado

 
Postado : 03/05/2012 6:28 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Não sei se compreendi direito, mas na questão do resultado da divisão acredito que tenha de utilizar a Função Round :

MS Excel: Round Function
Retorna um número arredondado para um número especificado de casas decimais.
http://www.techonthenet.com/excel/formulas/round.php

Quanto ao formato da Data, verifique como está formatada a hora nas outras máquinas:
Função Now
Retorna uma Variant (Date) que especifica a data e hora atuais de acordo com a data e hora do sistema do seu computador.

Dependendo de como estiver vai ter de forçar a conversão na rotina para o formato que quer.

Quanto a "se "SENHA" for igual a CD o codigo rodar", se a celula "CD" for por exemplo "B10", a rotina ficará:

If TextBoxPassw = Range("B10").Value Then..

Ou

Dim sSenha
sSenha= Range("B10").Value

If TextBoxPassw = sSenha.Value Then

[]s

 
Postado : 03/05/2012 9:09 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

ok ,Mauro
Porem não posso usar Range("b10") , já que a linha de inserção do User é variavel . tentei usar

SENHA = Plan5.Range("CD65000").End(xlUp).Value
If TextBoxPassw = SENHA Then
Unload Me
frmCad.Show
Else
If TextBoxPassw = "" Then
MsgBox "Digite Uma Senha Válida"
TextBoxPassw.Text = ""
TextBoxPassw.SelStart = 0
TextBoxPassw.SetFocus
Else
MsgBox "Senha Inválida"
TextBoxPassw.Text = ""
TextBoxPassw.SelStart = 0
TextBoxPassw.SetFocus
End If
End If
End Sub

mas mesmo assim o código não reconhece o que está em CD e dá msgbox "senha invalida"

 
Postado : 04/05/2012 5:14 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Para tirar da duvida se era o formato do numero , ao invés de calculo eu inseri manualmente em CD o valor 47205 ; mesmo assim deu o mesmo erro.

 
Postado : 04/05/2012 5:17 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

tentei o If TextBoxPassw = Range("CD2").Value Then tambem e coloquei a senha 47205 em CD2 , deu o mesmo erro

 
Postado : 04/05/2012 5:30 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia!!

Que erro está dando, poste um exemplo COMPACTADO!!

Userform1.TextBox1.Text = Sheets("Sheet1").Range("A1").Value

Att

 
Postado : 04/05/2012 5:47 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Um adendo,
por padrão um TextBox passa sempre valores TEXTO. Se a passwor é numerica (47205) então será necessario utilizar um conversor em TextBoxPassw

Exemplo : If cLng(TextBoxPassw) = Range("CD2").Value

 
Postado : 04/05/2012 6:16 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia!!

Que erro está dando, poste um exemplo COMPACTADO!!

Userform1.TextBox1.Text = Sheets("Sheet1").Range("A1").Value

Att

Alexandre ,
na verdade não é uma msg de erro. simplesmente o textbox não está acatando o valor como senha, ai retorna a MSGBOX" Senha Inválida"

Não entendi , onde colo o seu código acima, em que parte do meu código

 
Postado : 04/05/2012 5:13 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Um adendo,
por padrão um TextBox passa sempre valores TEXTO. Se a passwor é numerica (47205) então será necessario utilizar um conversor em TextBoxPassw

Exemplo : If cLng(TextBoxPassw) = Range("CD2").Value

Reinaldo , realmente a senha vai ser sempre numérica, não sei se coloquei certo seu conversor , porque ainda deu a MSGBOX" Senha Inválida" ; fiz da seguinte forma:

Private Sub CmdOk_Click()
'Desprot2
Plan5.Visible = xlSheetVisible
SENHA = Plan5.Range("CD65000").End(xlUp).Value
If CLng(TextBoxPassw) = SENHA Then
'If TextBoxPassw = senha Then
Unload Me
frmCad.Show
Else
If TextBoxPassw = "" Then
MsgBox "Digite Uma Senha Válida"
TextBoxPassw.Text = ""
TextBoxPassw.SelStart = 0
TextBoxPassw.SetFocus
Else
MsgBox "Senha Inválida"
TextBoxPassw.Text = ""
TextBoxPassw.SelStart = 0
TextBoxPassw.SetFocus
End If
End If
End Sub

 
Postado : 04/05/2012 5:16 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Solução do amigo Eduardo do Orkut:
.
Na célula CD2 a fórmula deve ser (não se esqueça de mudar a fómula lá no código)
.
=INT((CB2)/2)+HOJE()
.
E no Código deve ser...
.
Private Sub CmdOk_Click()
Desprot2
SENHA = Int(Plan5.Range("CD65000").End(xlUp).Value)
If Val(TextBoxPassw) = SENHA Then
Unload Me
frmCad.Show
Else
If TextBoxPassw = "" Then
MsgBox "Digite Uma Senha Válida"
TextBoxPassw.Text = ""
TextBoxPassw.SelStart = 0
TextBoxPassw.SetFocus
Else
MsgBox "Senha Inválida"
TextBoxPassw.Text = ""
TextBoxPassw.SelStart = 0
TextBoxPassw.SetFocus
End If
End If
End Sub

 
Postado : 04/05/2012 6:13 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa noite!!

Claudinei, conseguiu solucionar seu problema??..caso sim fico grato por marcar sua postagem como resolvido!!

Obrigado!!

 
Postado : 04/05/2012 6:23 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Quase resolvido mas ainda tenho um probleminha , o User que pego em CB para utilizar na senha , é no formato "C000000" no caso de pessoal próprio, e "E000000" no caso de contratado , mas coloquei =INT((DIREITA(CB2;5)/2)+HOJE()) para tirar o "C" ou "E"

O código de captura do User como disse antes é:
Sub Get_Computer_Name()
Dim a1 As String
a1 = Now
Dim Comp_Name_B As String * 255
Dim Comp_Name As String
GetComputerName Comp_Name_B, Len(Comp_Name_B)
Comp_Name = Left(Comp_Name_B, InStr(Comp_Name_B, Chr(0)))
Dim lpBuff As String * 25
Dim ret As Long, UserName As String
ret = GetUserName(lpBuff, 25)
UserName = Left(lpBuff, InStr(lpBuff, Chr(0)) - 1)
Plan5.Range("CA65000").End(xlUp).Offset(1, 0).Value = a1
Plan5.Range("CA65000").End(xlUp).Offset(0, 1).Value = UCase(UserName)
Plan5.Range("CA65000").End(xlUp).Offset(0, 2).Value = Comp_Name
Plan5.Range("CA65000").End(xlUp).Offset(0, 3).Value = FormulaLocal = "=INT((DIREITA(CB2;5)/2)+HOJE())"
'POREM AQUI PEGA FIXO O CB2 e não pode ser fixo porque é a ultima preenchida em CB , mas não sei como colocar de maneira variavel por ser =FormulaLocal
' Explicando:
'O que preciso é em CD (Plan5.Range("CA65000").End(xlUp).Offset(0, 3).Value =) ao invés de usar FormulaLocal = "=INT((DIREITA(CB2;5)/2)+HOJE())" usar a Fórmula =INT((DIREITA(Ultima em CB Vazia ao invés de CB2;5)/2)+HOJE())"

End Sub

 
Postado : 04/05/2012 6:27 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa noite!!

Caso alguém não poder ajuda-lo, seria legal mandar seu anexo!!

Att

 
Postado : 04/05/2012 6:32 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Claudinei, nãotestei sua rotina, mas se é somente para extrair o numero e letras de uma celula, de uma olhada no exemplo postado pelo Eron, acredito que estas Function irão resolver sem utilizar FormulaLocal :

Planilha para extrair números e letras de uma célula
viewtopic.php?f=21&t=4014

[]s

 
Postado : 04/05/2012 9:34 pm