2017-07-10 18 views
1

クライアントIDを定義する多くのケースのリストがあります。いずれの場合も、何かを返すために必要なIf文がいくつかあります。約15の特別なケースしかなく、残りは「ケース・エル」の下にあるため、状況によってはIfステートメントのいずれにも従わず、空のままです。ケース内のVBA条件

特定のケースがIfステートメントのいずれにも該当しない場合は、それを「ケースその他」にルーティングできますか?例えば

:このコードで、IDが10である場合、しかし左(ISIN、2)が "US"、 "UK" ではない、または "CH"、可能性がI経路にケース事件? Gotoを使用しているが

Case 10 

       '(U.S.) 
       If klienta_nr = 10 And (Left(ISIN, 2) = "US") Then 
        Komisija = Summa * 0.002 
        .Cells(lngCounter, lngKom) = Komisija 
         'min USD 20 
         If Komisija <= 20 Then 
          .Cells(lngCounter, lngKom) = 20 
          End If 
        End If 

       '(UK) 
       If klienta_nr = 10 And (Left(ISIN, 2) = "UK") Then 
        Komisija = Summa * 0.002 
        .Cells(lngCounter, lngKom) = Komisija 
         'min GBP 20 
         If Komisija <= 20 Then 
          .Cells(lngCounter, lngKom) = 20 
          End If 
        End If 
       '(Šveices) 
       If klienta_nr = 10 And (Left(ISIN, 2) = "CH") Then 
        Komisija = Summa * 0.002 
        .Cells(lngCounter, lngKom) = Komisija 
         'min CHF 20 
         If Komisija <= 20 Then 
          .Cells(lngCounter, lngKom) = 20 
          End If 
        End If 


    'Non-special klient cases 
    Case Else 

       'IP2, 0.03% komisija, 40 EUR/USD Max 
       If Right(vk, 1) = 1 Or Right(vk, 1) = 8 Then 
        Komisija = Summa * 0.003 
        .Cells(lngCounter, lngKom) = Komisija 
        End If 
       'IP1, 0.1% komisija, 40 EUR/USD Max 
       If Right(vk, 1) = 7 Then 
        Komisija = Summa * 0.01 
        .Cells(lngCounter, lngKom) = Komisija 
        End If 
       'Komisija MAX is 40, so anything >=40 equals 40 
       If Komisija >= 40 Then 
        .Cells(lngCounter, lngKom) = 40 
        End If 
+0

が短い答えは :いいえ、あなたは別の 'ケースに再ルーティングすることはできません'。しかし、あなたが 'If ... Then ... Else'構造を使って最初に設定した変数に基づいてケースを作成することができます。 –

+1

これはあなたが必要とするものに近いので、「If ... ElseIf ... Else'を調べることをお勧めします。インデントの一貫性がないためにコードを追跡するのが難しいので、適切なインデントを習得することを強くお勧めします(たとえば、「If」は1つのタブでインデントされますが、対応する「End If」は2つのタブでインデントされます)。 –

答えて

0

みだりに使用することをお勧めしますが、時にはそれが人生が容易になりますされていません。あなたの状況については

、あなたは、Case Else後の最初の文の前に「ラベル」を配置し、Gotoを使用することができ、すなわち

Select Case myExpression 

    Case 1 
    Some code 
    If someThing Then GoTo LabelCaseElse 
    Some code 

    Case 2 
    If someThing Then GoTo LabelCaseElse 
    Some code 

    Case Else 
LabelCaseElse: 
    msgBox "You are in Case Else!!" 
End Select 
+0

私はそれを試してみましょう。 – Nikolajs

+0

ありがとうございます。最も効率的な方法ではありませんが、効果的です。ありがとうございました。 – Nikolajs

+0

申し訳ありませんが、不調意な意図はありませんでした。あなたの答えは役に立ち、私の問題を解決するのに役立ちました。私はVBAの初心者です。このプログラムを最初から作成しようとしていますが、このような問題が発生します。 – Nikolajs