案件内的VBA条件

时间:2017-07-10 13:08:57

标签: excel vba excel-vba

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

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

例如:在此代码中,如果ID为10,则 Left(ISIN,2)不是" US",& #34; UK"或者" CH",我可以将案例路由到Case 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

1 个答案:

答案 0 :(得分:0)

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

根据您的情况,您可以放置​​&#34; 标签&#34;在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