案例内的 VBA 条件



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

如果某个案例不属于任何 If 语句,我可以将其路由到"案例其他"吗?

例如:在此代码中,如果 ID 为 10,但Left(ISIN, 2(不是"US"、"UK"或"CH",我可以将案例路由到案例 else 吗?

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

虽然不建议滥用Goto,但有时它会让生活更轻松。

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

最新更新