当我按下按钮时,Excel VBA文本框重置为0

时间:2013-01-12 12:58:27

标签: excel vba button textbox userform

我有一个包含2个文本框,2个标签和登录按钮的用户表单。

在我的Excel工作表上,我有一个包含id,name,pin和balance的数据库。

问题是每当我点击登录按钮时,我的ID文本框将其值重置为0,但我的pin文本框工作正常!

我将粘贴完整的代码:

Dim ID As Integer
Dim PIN As Integer
Dim PINField As String
Dim Balance As Double
Dim Attempts As Integer
Dim BalanceField As String


Private Sub btnLogin_Click()
    txtID.Text = ID
    Call SetId
    Call Authenticate
End Sub

Sub Authenticate()
    If txtPin.Text = PIN Then
        Call Welcome
    ElseIf Attempts > 3 Then
        Call Bye
    Else
        lblWelcome.Caption = "Wrong Pin"
        lblWelcome.ForeColor = RGB(255, 0, 0)
        Attempts = Attempts + 1
    End If
End Sub

Sub SetId()
    PINField = "C" & Str(ID)
    PINField = Replace(PINField, " ", "")
    MsgBox (PINField)
    BalanceField = "D" & Str(ID)
    BalanceField = Replace(BalanceField, " ", "")
    MsgBox (BalanceField)
End Sub

Sub Welcome()
    MsgBox ("Login Successful. Welcome")
End Sub

Sub Bye()
    MsgBox ("Max Pin Attempts reached. Contact Your Bank")
    Unload frmLogin
End Sub

2 个答案:

答案 0 :(得分:0)

这样做的原因是因为您使用的是没有值的变量。由于它是Integer,因此返回0.

我猜你可能真的想拥有ID = txtID.Text - 也就是说,取txtID文本框的值并将值存储在ID变量中。

这可能会出错,因为文本框的Text属性是String。您需要使用ID = CInt(txtID.Text)。您还应该进行一些检查以确保txtID.Text在赋值之前计算为整数。

答案 1 :(得分:0)

请确保代码中未显示的txtID中没有reset。看看你的代码,它没有说明你如何设置IDPIN的值......你说它对PIN工作正常,所以它让我非常好奇...

可能是尼克指出的情况,因为Form textboxes允许人们输入IDPIN。然后你将它与PIN。但是你在比较什么呢?正如你所说,你在表格中有一种数据库结构。您需要协助IDPIN使用它。

以下是我对工作表的可视化,这是我最好的盲目猜测:

用户需要通过表单输入值txtID。该数字实际上是包含相关cell number的列C的{​​{1}}。然后将该PIN与txtPIN值进行比较。接下来根据PIN返回balance列中的D

试试这个:

PIN