¿Cómo asignar la variable para poder poner un numero en Excel VBA?

Tengo la macro que copio a continuación que funciona como un Login. El problema es que la contraseña si o si tiene que ser con una letra porque sino me dice que la contraseña es invalida. En la actualidad la contraseña que uso es "f330306" y a mi me gustaría que sea "330306".

Desde ya muchas gracias.

Atentamente.

Lucas.

Private Sub CommandButton2_Click()
Dim usuario As String
Dim password As Variant
UsuarioExistente = Application.WorksheetFunction.CountIf(Range("D51:D60"), _
Me.txtUsuario.Value)
Set Rango = Range("D51:D60")
If Me.txtUsuario.Value = "" Or Me.txtPassword.Value = "" Then
MsgBox "Por favor introduce usuario y contraseña", vbExclamation, Blog
Me.txtUsuario.SetFocus
ElseIf UsuarioExistente = 0 Then
MsgBox "El usuario '" & Me.txtUsuario & "' no existe", vbExclamation, Blog
ElseIf UsuarioExistente = 1 Then
DatoEncontrado = Rango.Find(What:=Me.txtUsuario.Value, MatchCase:=True).Address
Contrasenia = Range(DatoEncontrado).Offset(0, 1).Value
If Range(DatoEncontrado).Value = Me.txtUsuario.Value And Contrasenia = _
Me.txtPassword.Value Then
Range("e2").Value = "Usuario: " & Range(DatoEncontrado).Offset(0, -1).Value
Application.Visible = True
Unload Me
Else
MsgBox "La contraseña es inválida", vbExclamation, Blog
End If
End If
End Sub

1 respuesta

Respuesta
1

Si la variable tiene que ser numérica debe ser definida como tal en lugar de String

Dim usuario as integer 'o long

Los textbox devuelven sus valores como 'texto' por lo que para evaluar si corresponde al nro 330338 debes convertir el textbox en value.

usuario = val(txtUsuario)

PD) Salvo que estés trabajando con datos de 2 Userforms al mismo tiempo, no es necesario que nombres a los controles con Me.,,, queda entendido.

*) Todo lo que necesitas saber sobre controles y formularios lo podés encontrar en mi manual de Formularios

Elsa,

Desde ya mil gracias pero no logro hacer que funcione.

El código me queda asi:

Private Sub CommandButton2_Click()
Dim usuario As Integer
Dim password As Variant
Dim DatoEncontrado
usuario = Val(txtUsuario)
UsuarioExistente = Application.WorksheetFunction.CountIf(Range("D51:D60"), _
Me.txtUsuario.Value)
Set Rango = Range("D51:D60")
If Me.txtUsuario.Value = "" Or Me.txtPassword.Value = "" Then
MsgBox "Por favor introduce usuario y contraseña", vbExclamation, Blog
Me.txtUsuario.SetFocus
ElseIf UsuarioExistente = 0 Then
MsgBox "El usuario '" & Me.txtUsuario & "' no existe", vbExclamation, Blog
ElseIf UsuarioExistente = 1 Then
DatoEncontrado = Rango.Find(What:=Me.txtUsuario.Value, MatchCase:=True).Address
Contrasenia = Range(DatoEncontrado).Offset(0, 1).Value
If Range(DatoEncontrado).Value = Me.txtUsuario.Value And Contrasenia = _
Me.txtPassword.Value Then
Range("e2").Value = "Usuario: " & Range(DatoEncontrado).Offset(0, -1).Value
Application.Visible = True
Unload Me
Else
MsgBox "La contraseña es inválida", vbExclamation, Blog
End If
End If
End Sub

<div id="wrc-float-icon" style="z-index: 2147483646; left: 15px; top: 15px; width: 42px; height: 42px; background-image: url('safari-extension://com.avast.wrc-6H4HRTU5E3/c9a1e5f1/images/float/green-1.png'); position: fixed; display: none;"> </div>

Es que debes convertirlo a Val cada vez que haces mención al txt .

Usaste una variable (usuario = Val(txtUsuario) ) pero luego seguis usando el txt ... asi que quitala

Aquí te dejo la macro ajustada:

Private Sub CommandButton2_Click()
Dim password As Variant
Dim DatoEncontrado
UsuarioExistente = Application.WorksheetFunction.CountIf(Range("D51:D60"), txtUsuario.Value)
Set Rango = Range("D51:D60")
If txtUsuario.Value = "" Or txtPassword.Value = "" Then
MsgBox "Por favor introduce usuario y contraseña", vbExclamation, Blog
txtUsuario.SetFocus
ElseIf UsuarioExistente = 0 Then
MsgBox "El usuario '" & txtUsuario & "' no existe", vbExclamation, Blog
ElseIf UsuarioExistente = 1 Then
DatoEncontrado = Rango.Find(What:=Val(txtUsuario), MatchCase:=True).Address
Contrasenia = Range(DatoEncontrado).Offset(0, 1).Value
If Range(DatoEncontrado).Value = Val(txtUsuario) And Contrasenia = txtPassword.Value Then
Range("e2").Value = "Usuario: " & Range(DatoEncontrado).Offset(0, -1).Value
Application.Visible = True
Unload Me
Else
MsgBox "La contraseña es inválida", vbExclamation, Blog
End If

Excelente. Funciono a la perfección.

<div id="wrc-float-icon" style="z-index: 2147483646; left: 15px; top: 15px; width: 42px; height: 42px; background-image: url('safari-extension://com.avast.wrc-6H4HRTU5E3/baf52a8c/images/float/green-1.png'); position: fixed; display: none;"> </div>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas