クライアント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
が短い答えは :いいえ、あなたは別の 'ケースに再ルーティングすることはできません'。しかし、あなたが 'If ... Then ... Else'構造を使って最初に設定した変数に基づいてケースを作成することができます。 –
これはあなたが必要とするものに近いので、「If ... ElseIf ... Else'を調べることをお勧めします。インデントの一貫性がないためにコードを追跡するのが難しいので、適切なインデントを習得することを強くお勧めします(たとえば、「If」は1つのタブでインデントされますが、対応する「End If」は2つのタブでインデントされます)。 –