VBA несколько, если еще, если заявление с диапазоном и текстом - PullRequest
0 голосов
/ 18 февраля 2020

Не могли бы вы помочь мне с этим. когда я запускаю marcos, я получаю неверное количество аргументов и неверное свойство

If Range(("K2") = "Technical", ("J2") = "Band 23", ("J2") = "Band 24") Then
    Range("U2").Value = "Core Team Trained"
    Else: If Range(("K2") = "Technical", ("J2") = "Band 25", "Band 26", "Band 30") Then Range("U2").Value = "PL Trained"
    Else: If Range(("K2") = "Management", ("J2") = "Band 25", "Band 26", "Band 30", "Band 31", "Band 40") Then Range("U2").Value = "Champion Trained"
    Else: If Range(("K2") = "Project Mgm", ("J2") = "Band 21", "Band 22", "Band 23") Then Range("U2").Value = "CORE TEAM MEMBER TRAINED"
    Else: If Range(("K2") = "Project Mgm", ("J2") = "Band 24") Then Range("U2").Value = "PL TRAINED"
    Else: If Range(("K2") = "Project Mgm", ("J2") = "Band 25") Then Range("U2").Value = "PL CERTIFIED"
    Else: If Range(("K2") = "Project Mgm", ("J2") = "Band 26") Then Range("U2").Value = "SME TRAINED"
    Else: If Range(("K2") = "Project Mgm", ("J2") = "Band 30") Then Range("U2").Value = "SME CERTIFIED"

End If

End Sub

1 Ответ

0 голосов
/ 18 февраля 2020

Для начала я бы посоветовал использовать структуру Select Case и убедиться, что, по крайней мере, используется ссылка Worksheet, чтобы избежать неявного ActiveSheet. Вы никогда не знаете, откуда ваш код может быть получен.

Sub Test()

Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets("Sheet1")

With ws
    Select Case .Range("K2").Value
    Case "Technical"
        Select Case CLng(Right(.Range("J2").Value, 2))
        Case 23, 24
            .Range("U2").Value = "Core Team Trained"
        Case 25, 26, 30
            .Range("U2").Value = "PL Trained"
        End Select
    Case "Management"
        Select Case CLng(Right(.Range("J2").Value, 2))
        Case 25, 26, 30, 31, 40
            .Range("U2").Value = "Champion Trained"
        End Select
    Case "Project Mgm"
        Select Case CLng(Right(.Range("J2").Value, 2))
        Case 21 - 23
            .Range("U2").Value = "CORE TEAM MEMBER TRAINED"
        Case 24
            .Range("U2").Value = "PL TRAINED"
        Case 25
            .Range("U2").Value = "PL CERTIFIED"
        Case 26
            .Range("U2").Value = "SME TRAINED"
        Case 30
            .Range("U2").Value = "SME CERTIFIED"
        End Select
    End Select
End With

End Sub

Не самый короткий код, но ясность имеет большое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...