замените значение, возвращаемое формулой VLOOKUP - PullRequest
0 голосов
/ 02 сентября 2010

Я пытался создать код VBA для выполнения следующих действий.

У меня есть 2 листа, один с именем Pay_balance и другой Debtor_list.Список списков должников представляет собой таблицу из ячеек A2: B13;A1 и B1 являются заголовками («Должники» и «Баланс»).Оба столбца имеют присвоенные имена («Alldebtor» - A2: A13 и «Allbalance» B2: B13).На листе Pay_balance у меня есть раскрывающийся список, использующий проверку данных (источник) «Alldebtors» в ячейке F18 для ввода значения в G18 и текущего баланса клиента «Alldebtors», выбранного в F18 в ячейке H18, по формуле ниже:

=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», в настоящее время он вставляет результат в A1 «»Pay_balance "и отображает окно MSG, мне нужно, чтобы он заменил значение, возвращаемое формулой VLOOKUP на листе" Debtor_list "новым балансом клиентов, поэтому, когда я вернусь на лист" Pay_balance ", выберите имя человекас F18 он отображает их новый баланс как «mycount» в H18.

1 Ответ

1 голос
/ 04 сентября 2010
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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...