2010-09-02 215 views
0

我一直在尝试使VBA代码执行以下操作。替换VLOOKUP公式返回的值

我有2个表,一个名为Pay_balance,另一个名为Debtor_list。 Debtor_list表是来自单元格A2:B13的表格; A1 & B1是标题(“债务人”和“余额”)。两列都分配了名称(“Alldebtor” - A2:A13 &“Allbalance”B2:B13)。在Pay_balance表中,我有一个下拉列表,使用F18上的数据有效性(来源)“Alldebtors”单元在G18上输入一个值,并使用以下公式在F18单元格H18中选择的“Alldebtors”客户的当前余额:

=VLOOKUP(F18,Debtor_list!A2:B13,2,FALSE) 

然后我有一个付费按钮使用VBA代码;

Sub Pay_Click() 

    mycount = Range("G18") + Range("H18") Range("a1") = mycount 

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

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

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

    Sheets("Menu").Select 
End Sub 

G18 + H18的结果是“mycount的”它现在贴的结果,在“Pay_balance”表的A1和显示味精盒,我需要的是为它更换由VLOOKUP返回的值“Debtor_list”表中的公式为客户新余额,所以当我返回到“Pay_balance”工作表时,从F18中选择人名,它会在H18中显示他们的新余额为“mycount”。

回答

1
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