Как я могу добавить это значение в дополнение к тому, что вводит пользователь? - PullRequest
0 голосов
/ 29 мая 2019

У меня есть скрипт, который реализует FindNext, чтобы найти в листе строку, соответствующую двум значениям столбца, которые пользователь вводит с помощью Application.InputBox.Работает без нареканий.Но есть случай, когда мне бы хотелось, чтобы одно из msgbox отображало другое значение ячейки в этой строке без ввода пользователя.

Пример: вводимые пользователем код задания 000001 найден в столбце A, МВЗ 100100010001 Найден в столбце C.

Поле msgbox будет соответствовать ему и сказать: MsgBox "Job Code (" & lJobCode & ") is eligible for this cost-center.

Что если бы я также хотел, чтобы это окно сообщения добавляло значение, найденное в другом столбце, но автоматически?Мол, без ввода пользователя, потому что они не знали бы эту информацию от руки.

Новый пример MsgBox: MsgBox "Job Code (" & lJobCode & ") is eligible for this (" & Column H Value for this row & ") cost-center.

Я думал о чем-то вроде переменной str и ссылаюсь на столбец, но у меня возникают проблемы с использованием VBA-триггера для этого значения после сопоставления строки,

Остальная часть сценария:

Option Explicit
Sub findJC_CC()

Dim wsData As Worksheet
Dim rFound As Range
Dim lJobCode As String
Dim lCC As String
Dim sFirst As String
Dim matched As Boolean

lJobCode = Application.InputBox("Please provide a job code", "Job Code", Type:=2)
If lJobCode = "False" Then Exit Sub 'Pressed cancel
lCC = Application.InputBox("Please enter in a cost-center", "CC", Type:=2)
If lCC = "False" Then Exit Sub 'Pressed cancel

matched = False
Set wsData = ThisWorkbook.Worksheets("Sheet2")
Set rFound = wsData.Columns("A").Find(lJobCode, wsData.Cells(wsData.Rows.Count, "A"), xlValues, xlWhole)

If Not rFound Is Nothing Then
    sFirst = rFound.Address
    Do

        If rFound.Offset(, 2).Value = lCC Then
            matched = True

            'if criteria is met, display msgbox and exit
            If rFound.Offset(, 4).Value = "Exempt" Then
                MsgBox "The business identified this exempt job as being eligible for schedule pay allowance ."
                Exit Sub
            End If

            'if criteria is met, display msgbox and exit
            If rFound.Offset(, 5).Value = "Eligible - Employee Level" Then
                MsgBox "This job is only eligible at the employee level. If you have further questions, please reach out to your HRBP."
                Exit Sub
            End If

            'if non-exempt role, and matched, display msgbox and exit
            MsgBox "Job Code (" & lJobCode & ") is eligible for this cost-center."
            Exit Sub
        End If

        'loop after first address found until column C has lCC value matched
        Set rFound = wsData.Columns("A").FindNext(rFound)
    Loop While rFound.Address <> sFirst

    'lJobCode value matched, lCC value not matched
    If Not matched Then MsgBox "Job Code (" & lJobCode & ") found, but not eligible for this cost-center."
Else

    'lJobCode not matched
    MsgBox "Job Code (" & lJobCode & ") not eligible."

End If

End Sub

Ответы [ 2 ]

2 голосов
/ 29 мая 2019

Если я правильно понимаю, переменная rFound указывает на ячейку в столбце А, от которой вы хотите сместить.Если это так, вы можете написать код:

MsgBox "Job Code (" & lJobCode & ") is eligible for this (" & rFound.Offset(,7).Value & ") cost-center.
0 голосов
/ 29 мая 2019

Вы можете добавить эту строку:

Option Explicit
Sub findJC_CC()

Dim wsData As Worksheet
Dim rFound As Range
Dim lJobCode As String
Dim lCC As String
Dim sFirst As String
Dim matched As Boolean

lJobCode = Application.InputBox("Please provide a job code", "Job Code", Type:=2)
If lJobCode = "False" Then Exit Sub 'Pressed cancel
lCC = Application.InputBox("Please enter in a cost-center", "CC", Type:=2)
If lCC = "False" Then Exit Sub 'Pressed cancel

matched = False
Set wsData = ThisWorkbook.Worksheets("Sheet2")
Set rFound = wsData.Columns("A").Find(lJobCode, wsData.Cells(wsData.Rows.Count, "A"), xlValues, xlWhole)

If Not rFound Is Nothing Then
    sFirst = rFound.Address
    Do

        If rFound.Offset(, 2).Value = lCC Then
            matched = True

            'if criteria is met, display msgbox and exit
            If rFound.Offset(, 4).Value = "Exempt" Then
                MsgBox "The business identified this exempt job as being eligible for schedule pay allowance ."
                Exit Sub
            End If

            'if criteria is met, display msgbox and exit
            If rFound.Offset(, 5).Value = "Eligible - Employee Level" Then
                MsgBox "This job is only eligible at the employee level. If you have further questions, please reach out to your HRBP."
                Exit Sub
            End If

            'if non-exempt role, and matched, display msgbox and exit
            MsgBox "Job Code (" & lJobCode & ") is eligible for this (" & rFound.Offset(, 7).Value & ") cost-center."
            Exit Sub
        End If

        'loop after first address found until column C has lCC value matched
        Set rFound = wsData.Columns("A").FindNext(rFound)
    Loop While rFound.Address <> sFirst

    'lJobCode value matched, lCC value not matched
    If Not matched Then MsgBox "Job Code (" & lJobCode & ") found, but not eligible for this cost-center."
Else

    'lJobCode not matched
    MsgBox "Job Code (" & lJobCode & ") not eligible."

End If

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