vba - как кодировать, основываясь на количестве найденных переменных - PullRequest
0 голосов
/ 11 февраля 2020

Сценарий: у меня есть претензия с несколькими строками. Мне нужно добавить код, основанный на том, найден ли «0762» один раз против более одного раза.

В сценарии 1 мне нужно будет разделить строки 1 и 2. В сценарии 2 мне не нужно будет разбить что-нибудь, просто запретить строку 1.

Я просто не знаю начальный код того, как написать: «если это найдено только один раз во всем количестве строк X, тогда сделайте Y, иначе, если найдете больше чем один раз, сделайте Z "

Код будет по существу сканировать все строки и должен знать, была ли переменная найдена только один или несколько раз.

Сценарий 1:

Ln1 - 0762

Ln2 - 0762

Ln3 - 0450

Сценарий 2:

Ln1 - 0762

Ln2 - 0450

Может кто-нибудь помочь? Я надеюсь, что моего объяснения было достаточно - поэтому извините заранее, если я не смог объяснить лучше.

Редактировать:

Ниже приведен мой текущий код, который находит

  1. все RC762 в заявке и разделяет их на отдельную заявку, переопределяет и обрабатывает как исходную, так и разделенную
  2. , если заявка уже является разделенной заявкой, проверьте строки для RC762. Если все они RC762, переопределите и отпустите.

Что мне нужно добавить, так это если RC762 имеет модификатор GZ, отклонить RC762 с A C "458" и обработать. И , если это ТОЛЬКО RC762 в заявке - не разделяйте его, но если имеется несколько RC762, разделите их все и запретите только строку с модификатором GZ.

I я изо всех сил пытаюсь закодировать его, как определить, существует ли только 1x RC762 или несколько, после того, как он отсканирует все строки, так как это определит кодировку для того, что делать дальше.

    AppActivate UseIBM1
    HE.Connect "A" 'BlueZone
    PAUSE 1

'   If M00003 or M00033 contract but not PVD# 022921, enter SPI overrides and release - 2019_1210. MF
        Select Case QmyClaim(1).aaLine_K_Detail(1).KPriCont
            Case Is = "M00003", "M00033"
                If Left(QmyClaim(1).PvdNum, 6) <> "022921" Then
                    Utilities.GoToPclmScrnNumber "6", UseIBM1, "10", , "NO", "BUTTONS"
                    Utilities.PassNoteToPCLM_RemarksGHC "MPT025", UseIBM1, "11", "BUTTONS"
                    Utilities.AssignSPIcodeUB "8H9", UseIBM1, "12", "BUTTONS"
                    Utilities.AssignSPIcodeUB "REO", UseIBM1, "13", "BUTTONS"
                    Utilities.PressKey "ENTER", False, UseIBM1, "14", , "YES", "BUTTONS"
                    ActionEntry = "SPI Overrides Entered - Medicare contract without PVD#022921."
                    GoTo EditCheck
                End If
            Case Else
            'do nothing
        End Select

'       If M10 contract, enter SPI overrides and release
        If QmyClaim(1).aaLine_K_Detail(1).KPriCont = "M00010" Then
            AppActivate UseIBM1
            HE.Connect "A" 'BlueZone
            PAUSE 1

            Utilities.GoToPclmScrnNumber "6", UseIBM1, "15", , "NO", "BUTTONS"
            Utilities.PassNoteToPCLM_RemarksGHC "MPT025", UseIBM1, "16", "BUTTONS"
            Utilities.AssignSPIcodeUB "8H9", UseIBM1, "17", "BUTTONS"
            Utilities.AssignSPIcodeUB "REO", UseIBM1, "18", "BUTTONS"
            Utilities.PressKey "ENTER", False, UseIBM1, "19", , "YES", "BUTTONS"
            ActionEntry = "Released - M00010 contract."
            GoTo EditCheck
        End If

        AppActivate UseIBM1
        HE.Connect "A" 'BlueZone
        PAUSE 1

'       If claim is already split, check if all lines are RC762 '2019_1210. MF
        SC = Trim(HE.CurrentHost.TextRC(4, 16, 1))

        If SC = "0" Then
            'do nothing, continue
        Else
            For SCL = 1 To QmyClaim(1).aaLastLineArrayPosition
                If QmyClaim(1).aaLine_UB(SCL).Rev = "0762" Then
                'do nothing
                Else
'                   Skip claim for manual review if any other RC on split claim '2019_1210. MF
                    ActionEntry = "Skipped - Claim already split. Manual review needed."
                    'clear screen
                    Utilities.PressKey "pageup", True, UseIBM1, "20", , "NO", "BUTTONS"
                    GoTo ENDOFCLAIM
                End If
            Next SCL

'           All lines are RC762 then enter SPI overrides and add macro stamp '2019_1210. MF
            If QmyClaim(1).aaLine_UB(SCL).Rev = "" Then
                Utilities.PassNoteToPCLM_RemarksGHC "MPT025", UseIBM1, "21", "BUTTONS"
                Utilities.AssignSPIcodeUB "8H9", UseIBM1, "22", "BUTTONS"
                Utilities.AssignSPIcodeUB "REO", UseIBM1, "23", "BUTTONS"
                Utilities.PressKey "ENTER", False, UseIBM1, "24", , "YES", "BUTTONS"
                ActionEntry = "All lines RC762 - SPI overrides entered"
                GoTo EditCheck
            End If
        End If

'       Notate split on original claim
        Utilities.GoToPclmScrnNumber "6", UseIBM1, "25", , "NO", "BUTTONS"
        HE.CurrentHost.PutText "1/2", 13, 39 'COMMENTS FIELD
        Utilities.PassNoteToPCLM_RemarksGHC "MPT025", UseIBM1, "26", "BUTTONS"
        HE.CurrentHost.PutText "Y", 5, 66 'SPLIT CLAIM SC=Y
        Utilities.PressKey "ENTER", False, UseIBM1, "27", , "NO", "BUTTONS"

'       Find lines with RC762 and split from claim
        Z = 11

        SplitLine = Trim(HE.CurrentHost.TextRC(Z, 2, 1))

        For Y = 1 To QmyClaim(1).aaLastLineArrayPosition
            LineItem = Trim(HE.CurrentHost.TextRC(Z, 4, 3))

                If LineItem = "" Then
                    EOD = Trim(HE.CurrentHost.TextRC(22, 2, 3))

                    If EOD = "967" Then
                        GoTo SkipF8
                    End If

                    Utilities.PressKey "F8", False, UseIBM1, "28", , "NO", "BUTTONS"
                    Z = 11
                ElseIf LineItem = "099" Then
                    'clear screen
                    Utilities.PressKey "pageup", True, UseIBM1, "29", , "NO", "BUTTONS"
                    ActionEntry = "Skipped - More than 99 lines.  Manually split. "
                    GoTo ENDOFCLAIM
                End If

                If QmyClaim(1).aaLine_UB(Y).Rev = "0762" Then
                    HE.CurrentHost.PutText "S", Z, 2
                End If

        Z = Z + 1
        Next Y

SkipF8:
'       Process split claim and notate split 2/2
        HE.CurrentHost.PutText "Y", 7, 2
        Utilities.PressKey "F3", False, UseIBM1, "30", , "NO", "BUTTONS"
        Utilities.PressKey "F9", False, UseIBM1, "31", , "YES", "BUTTONS"
        Select Case myOutcome(1).Edit1_8(1).ErrNum
            Case Is = "550", "552"
                'do nothing
            Case Else
                Utilities.ProcessPCLMClmPendPerPTAI UseIBM1, "32", "BUTTONS"
                GoTo Pend
        End Select
        Utilities.PressKey "ENTER", False, UseIBM1, "33", , "NO", "BUTTONS"
Pend:
        Utilities.GoToPclmScrnNumber "6", UseIBM1, "34", , "NO", "BUTTONS"
        Utilities.PassNoteToPCLM_RemarksGHC "MPT025", UseIBM1, "35", "BUTTONS"
        HE.CurrentHost.PutText "2/2", 13, 39 'COMMENTS FIELD

EnterSPI:
'       Assign SPI override
        Utilities.AssignSPIcodeUB "8H9", UseIBM1, "36", "BUTTONS"
        Utilities.AssignSPIcodeUB "REO", UseIBM1, "37", "BUTTONS"
        ActionEntry = ActionEntry & "RC762 split from claim"
        Utilities.PressKey "ENTER", False, UseIBM1, "38", , "YES", "BUTTONS"

Спасибо, ребята

1 Ответ

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

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

По существу: затемните логическое значение, установите его в False и затем внутри For / Next, как только переменная будет найдена в вашем операторе If в первый раз, вызовите ее значение true. Затем, как только переменная будет найдена снова, если логическое значение истинно, выйдите из For. Поэтому, если переменная найдена только один раз, она завершит действие, иначе она выйдет из for, если найдена более одного раза, и ничего не сделает / продолжит.

на основе кода, который я написал выше, это было то, что я добавлено вверху:

'   If RC762 with modifier GZ is only RC762 on claim, deny line
    For Y = 1 To QmyClaim(1).aaLastLineArrayPosition
        If QmyClaim(1).aaLine_UB(Y).Rev = "0762" Then
            If RC762GZ = True Then
                Exit For
            End If

            If QmyClaim(1).aaLine_UB(Y).Mod1 = "GZ" Then
                RC762GZ = True
                RC762GzLn = Y
            ElseIf QmyClaim(1).aaLine_UB(Y).Mod2 = "GZ" Then
                RC762GZ = True
                RC762GzLn = Y
            Else
                Exit For
            End If
        End If

        If Y = QmyClaim(1).aaLastLineArrayPosition Then
            Utilities.DenyLineWithActionCode RC762GzLn, "458", UseIBM1, "1", "BUTTONS"
            Utilities.PressKey "ENTER", False, UseIBM1, "19", , "YES", "BUTTONS"
            ActionEntry = "RC762 with modifier GZ denied AC 458."
            GoTo EditCheck
        End If
    Next Y
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...