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 ループで指定された範囲内を検索する方が高速になる可能性があります。配列)。

乾杯

于 2012-11-19T09:03:51.433 に答える