案例中的VBA条件

我有许多案例的列表,它们定义了一个客户端ID。 在每种情况下,都有几个If语句需要遵循才能返回。 由于只有大约15个特殊情况,其余的情况属于“其他情况”,在某些情况下,一个案件并不遵循任何If语句,因此将其留空。

如果某个案件不属于任何If语句,我可以将其转到“Case Else”吗?

例如:在此代码中,如果ID是10,但是左(ISIN,2)不是“US”,“UK”或“CH”,我可以将案例路由到案件吗?

Case 10 '(US) 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 

虽然使用Goto不build议滥用,但有时它使生活更容易。

对于您的情况,您可以在Case Else之后的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