Excel电子表格转换为UserForm VBA问题

时间:2010-09-04 10:21:16

标签: excel vba

我制作了一张Sheet,我现在转换为UserForm,但我使用的VB代码不再有效,我会复制旧的代码和新的代码一直告诉我“找不到债务人”,任何帮助都会得到赞赏。

旧代码:

Sub Buy_Click()

    Name = Worksheets("Purchase").Range("G19").Value
    Amount = CSng(Worksheets("Purchase").Range("I19").Value)
    Balance = CSng(Worksheets("Purchase").Range("J19").Value)

    If Name = "" Then
        MsgBox "Select Debtor"
        Exit Sub
    End If



    DebtorRow = 1
    Do
        TempName = Worksheets("Debtor_list").Range("A" & DebtorRow).Value
        If TempName = Name Then
            DebtorBalance = CSng(Worksheets("Debtor_List").Range("B" & DebtorRow).Value)
            Exit Do
        End If
        DebtorRow = DebtorRow + 1
    Loop Until TempName = ""

    If TempName = "" Then
        MsgBox "Debtor not found"
        Exit Sub
    End If


    Worksheets("Debtor_List").Range("B" & DebtorRow).Value = DebtorBalance - Amount

MsgBox "You have just Purchased " & Range("H19") & " For $" & Range("I19") & vbCrLf & "Your Account Balance is now: " & Range("J19")

    Application.Goto Reference:="Purchase_Debtor"
    Selection.ClearContents

    Application.Goto Reference:="Purchase_Quantity"
    Selection.ClearContents

    Sheets("Menu").Select

End Sub

新守则:

Private Sub cmdBuy_Purchase_Click()

    Purchase_Select_Debtor.Value = Name
        Purchase_Select_Price.Value = Amount
    Purchase_Select_Balance.Value = Balance

    If Name = "" Then
        MsgBox "Select Debtor"
        Exit Sub
    End If

    DebtorRow = 1
    Do
        TempName = Worksheets("Debtor_list").Range("A" & DebtorRow).Value
        If TempName = Name Then
            DebtorBalance = CSng(Worksheets("Debtor_List").Range("B" & DebtorRow).Value)
            Exit Do
        End If
        DebtorRow = DebtorRow + 1
    Loop Until TempName = ""

    If TempName = "" Then
        MsgBox "Debtor not found"
        Exit Sub
    End If


    Worksheets("Debtor_List").Range("B" & DebtorRow).Value = DebtorBalance - Amount

MsgBox "You have just Purchased " & Amount & " For $" & Amount & vbCrLf & "Your Account Balance is now: " & Balance

End Sub

另一个代码我用于具有相同问题的不同UserForm;

旧代码:

Sub Pay_Click()

    Name = Worksheets("pay_balance").Range("F18").Value
    Amount = CSng(Worksheets("pay_balance").Range("G18").Value)

    If Name = "" Then
        MsgBox "Select Debtor"
        Exit Sub
    End If

    DebtorRow = 1
    Do
        TempName = Worksheets("Debtor_list").Range("A" & DebtorRow).Value
        If TempName = Name Then
            DebtorBalance = CSng(Worksheets("Debtor_List").Range("B" & DebtorRow).Value)
            Exit Do
        End If
        DebtorRow = DebtorRow + 1
    Loop Until TempName = ""

    If TempName = "" Then
        MsgBox "Debtor not found"
        Exit Sub
    End If


    Worksheets("Debtor_List").Range("B" & DebtorRow).Value = DebtorBalance + Amount

    MsgBox "You have just Credited $" & Range("G18") & vbCrLf & "Your Account Balance is now: " & Range("H18")

    Application.Goto Reference:="Creditbox"
    Selection.ClearContents

    Application.Goto Reference:="Balance_Debtor"
    Selection.ClearContents

    Sheets("Menu").Select

End Sub

新守则:

Private Sub cmdPay_Balance_Click()

Pay_Balance_Balance.Value = Name
Pay_Balance_Credit.Value = Amount

    If Name = "" Then
        MsgBox "Select Debtor"
        Exit Sub
    End If

    DebtorRow = 1
    Do
        TempName = Worksheets("Debtor_list").Range("A" & DebtorRow).Value
        If TempName = Name Then
            DebtorBalance = CSng(Worksheets("Debtor_List").Range("B" & DebtorRow).Value)
            Exit Do
        End If
        DebtorRow = DebtorRow + 1
    Loop Until TempName = ""

    If TempName = "" Then
        MsgBox "Debtor not found"
        Exit Sub
    End If


    Worksheets("Debtor_List").Range("B" & DebtorRow).Value = DebtorBalance + Amount

    MsgBox "You have just Credited $" & Amount & vbCrLf & "Your Account Balance is now: " & Name

End Sub

1 个答案:

答案 0 :(得分:1)

Private Sub cmdBuy_Purchase_Click()

    Debtor = Purchase_Select_Debtor.Value
    Amount = CSng(txtPrice.Value)
    Balance = CSng(txtBalance.Value)

    If Debtor = "" Then
        MsgBox "Select Debtor"
        Exit Sub
    End If

    DebtorRow = 1
    Do
        TempDebtor = Worksheets("Debtor_list").Range("A" & DebtorRow).Value
        If TempDebtor = Debtor Then
            DebtorBalance = CSng(Worksheets("Debtor_List").Range("B" & DebtorRow).Value)
            Exit Do
        End If
        DebtorRow = DebtorRow + 1
    Loop Until TempDebtor = ""

    If TempDebtor = "" Then
        MsgBox "Debtor not found"
        Exit Sub
    End If

    Worksheets("Debtor_List").Range("B" & DebtorRow).Value = DebtorBalance - Amount

    Balance = Application.VLookup(Purchase_Select_Debtor.Value, Sheets("Debtor_list").Range("A2:B13"), 2, 0)

    MsgBox "You have just Purchased " & Purchase_Select_Quantity.Value & " For $" & Amount & vbCrLf & "Your Account Balance is now: " & Balance

    Unload FrmPurchase

End Sub

&安培;

Sub cmdPay_Balance_Click()

    Debtor = Pay_Balance_Select_Debtor.Value
    Amount = CSng(txtCredit.Value)

    If Debtor = "" Then
        MsgBox "Select Debtor"
        Exit Sub
    End If

    DebtorRow = 1
    Do
        TempDebtor = Worksheets("Debtor_list").Range("A" & DebtorRow).Value
        If TempDebtor = Debtor Then
            DebtorBalance = CSng(Worksheets("Debtor_List").Range("B" & DebtorRow).Value)
            Exit Do
        End If
        DebtorRow = DebtorRow + 1
    Loop Until TempDebtor = ""

    If TempDebtor = "" Then
        MsgBox "Debtor not found"
        Exit Sub
    End If


    Worksheets("Debtor_List").Range("B" & DebtorRow).Value = DebtorBalance + Amount

    txtBalance.Value = Application.VLookup(Pay_Balance_Select_Debtor.Value, Sheets("Debtor_list").Range("A2:B13"), 2, 0)

    MsgBox "You have just Credited $" & Amount & vbCrLf & "Your Account Balance is now: " & txtBalance

    Unload frmPay_Balance

End Sub