0
Function ProtectiveDiscount(PDD As Range)
'‘Find discount in table
TotalDiscount = 0
For i = 0 To ListBox1.ListCount - 1

If ListBox1.Selected(i).Value = "Dead bolt, Local Fire Alarm, Fire extinguisher" Then
Msg = Msg & ListBox1.List(i) & vbNewLine
TotalDiscount = TotalDiscount + WorksheetFunction.VLookup(ListBox1.Selected(i).Value, Worksheets("Sheet4").Range("PDD"), 2, False)
' TotalDiscount = TotalDiscount +  WorksheetFunction.VLookup(ListBox1.Selected(i).Value, Range("R50:S55"), 2, False)
End If

If ListBox1.Selected(i).Value = "Burglar Alarm with Reporting" Then
Msg = Msg & ListBox1.List(i) & vbNewLine
TotalDiscount = TotalDiscount + WorksheetFunction.VLookup(ListBox1.Selected(i).Value, PDD, 2, False)
' TotalDiscount = TotalDiscount + WorksheetFunction.VLookup(ListBox1.Selected(i).Value, Range("R50:S55"), 2, False)
End If

If ListBox1.Selected(i).Value = "Fire Alarm with Reporting" Then
Msg = Msg & ListBox1.List(i) & vbNewLine
TotalDiscount = TotalDiscount + WorksheetFunction.VLookup(ListBox1.Selected(i).Value, Worksheets("Sheet4").Range("PDD"), 2, False)
 'TotalDiscount = TotalDiscount + WorksheetFunction.VLookup(ListBox1.Selected(i).Value, Range("R50:S55"), 2, False)
End If

If ListBox1.Selected(i).Value = "Automatic Sprinkler in all areas" Then
Msg = Msg & ListBox1.List(i) & vbNewLine
TotalDiscount = TotalDiscount + WorksheetFunction.VLookup(ListBox1.Selected(i).Value, Worksheets("Sheet4").Range("PDD"), 2, False)
' TotalDiscount = TotalDiscount + WorksheetFunction.VLookup(ListBox1.Selected(i).Value, Range("R50:S55"), 2, False)
End If
End Function

由于某种原因,我的 vlookup 功能不起作用。我尝试了几种方法,但我被卡住了。任何人都可以提供任何帮助

4

1 回答 1

0

我真的不明白使用 if ... end if x4 而不使用 If ...elseif ... elseif ... end if 的意义。但即使这样也可能不需要,因为 Ifs 中的操作是相同的......也许你应该考虑 if (a=a1) or (a=a2) or ... Then ... elseif ... else ...如果形式结束。无论如何,由于您可能只发布了您的代码的一部分,因此我对此不再多说。关于Vlookup部分,我相信这种形式:

If ListBox1.Selected(i).Value="Dead bolt, Local Fire Alarm, Fire extinguisher" Then
    Msg = Msg & ListBox1.List(i) & vbNewLine
    TotalDiscount = TotalDiscount + application.WorksheetFunction.VLookup(ListBox1.Selected(i).Value, PDD, 2, False) 
elseif ListBox1.Selected(i).Value = "Burglar Alarm with Reporting" Then

应该可以正常工作。

也是一个小评论。尽管使用工作表函数编写起来更容易/更快,但使用 Cells() 从 VBA 中搜索并使用 for-next 循环在指定范围内查找可能会更快,特别是因为您不使用快速 Vlookup(使用排序大批)。

干杯

于 2012-11-19T09:03:51.433 回答