2010-09-02 4 views
0

J'ai essayé de faire un code VBA pour faire ce qui suit.remplacer la valeur retournée par la formule VLOOKUP

J'ai 2 feuilles, une nommée Pay_balance et l'autre Debtor_list. La feuille Debtor_list est une table des cellules A2: B13; A1 & B1 sont des en-têtes ("débiteurs" et "solde"). Les deux colonnes ont des noms attribués ("Alldebtor" - A2: A13 & "Allbalance" B2: B13). Sur la feuille Pay_balance j'ai une liste déroulante en utilisant Data Validation (Source) "Alldebtors" sur F18 A Cellule pour entrer une valeur sur G18 Et le solde actuel du client "Alldebtors" sélectionné sur F18 dans la cellule H18 en utilisant la formule ci-dessous :

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

J'ai alors un bouton de paiement en utilisant le code 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 

Le résultat de G18 + H18 est « mycount » il colle actuellement le résultat en A1 du « Pay_balance » feuille et affiche une boîte de MSG, ce que j'ai besoin pour cela de remplacer la valeur retournée par la RECHERCHEV Formule sur la feuille "Debtor_list" étant le nouveau solde du client, donc quand je reviens à la feuille "Pay_balance" sélectionnez le nom des personnes de F18 il affiche leur nouveau solde étant le "mycount" dans H18.

Répondre

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 
Questions connexes