2016-02-23 86 views
-1

我想要做的是能夠雙擊列表框中的模型編號,然後使用Hlookup在實際列表中查找單獨位置中的值。最終會進行簡單的計算,但我被困在這個小小的bug子手上。這個Vlookup爲什麼不工作? VBA

只是爲了一些額外的信息價格表是包含模型#和價格的表格的名稱,ListModel是列表框的名稱。

Private Sub ListModel_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 

Dim perDiscountRate As Double 
Dim PerDiscountPrice As Currency 
Dim PriceList As String 

perDiscountRate = InputBox("What is the discount rate", "Discount Calculator", "10")/100 
Application.Workbooks("T6-EX-E1D.xlsm").Worksheets("Computers").Range("c6:c8").Value = perDiscountRate 

perDiscountRate = Application.WorksheetFunction.VLookup("ListModel.Selected", PriceList, 2) 

End Sub 
+2

'HLOOKUP'或'VLOOKUP'?你的標題中有一個,代碼中有一個。 –

+0

什麼是「ListModel.Selected」? – Davesexcel

+0

您沒有正確執行查找。此鏈接可能會幫助您解決問題:[http://www.excelfunctions.net/VBA-Vlookup.html]。 – dev1998

回答

0

如果我猜你的目標正確,你會使用

Dim sht As Worksheet 

Set sht = Application.Workbooks("T6-EX-E1D.xlsm").Worksheets("Computers") 
With Me.ListModel 
    PerDiscountPrice = Application.WorksheetFunction.VLookup(.List(.ListIndex), sht.Range("PriceList"), 2, 0) 
End With 

,我推測,「價目表」是T6-EX-E1D.xlsm的」「計算機」工作表「命名的範圍」 「工作簿。

如果不是,只是改變引用按您的需求

0

謝謝你的幫助。我能夠讓代碼工作。這是它的樣子。

Private Sub ListModel_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 

Dim perDiscountRate As Double 
Dim PerDiscountPrice As Currency 
Dim PriceList As Range 
Dim Org As Worksheet 

Set Org = Application.Workbooks("T6-EX-E1D.xlsm").Worksheets("Computers") 


perDiscountRate = InputBox("What is the discount rate", "Discount Calculator", "10")/100 
Application.Workbooks("T6-EX- E1D.xlsm").Worksheets("Computers").Range("c6:c8").Value = perDiscountRate 
PerDiscountPrice = Application.WorksheetFunction.VLookup(ListModel, Range("PriceList"), 2) 

Application.Workbooks("T6-EX-E1D.xlsm").Worksheets("Computers").Range("d6:d8").Value = PerDiscountPrice 



End Sub 

我已經通過放入ListModel.selected而使Vlookup中的第一個參數複雜化了。只需使用名稱ListModel就足夠了。

最好, Zack