Показывать значение ячейки в Msgbox на основе оператора IF в другом столбце - Excel VBA - PullRequest
1 голос
/ 25 февраля 2020

Я хочу создать оповещение Msgbox, чтобы сообщить мне, когда контракт сотрудников заканчивается.

Ячейки, срок действия которых истекает через 4 - 1 месяц (ы), будут заполнены красным цветом:

enter image description here

This мой код до сих пор:

Private Sub workbook_open()

Dim rngData As Range
Dim rngCell As Range
Dim counter As Long: counter = 0
Set rngData = Range("E4:E" & Cells(Rows.Count, Range("E3").Column).End(xlUp).Row)


For Each rngCell In rngData
    If rngCell.Value = "4" Or rngCell.Value = "3" Or rngCell.Value = "2" Or rngCell.Value = "1" And rngCell.Value <> "" Then

        counter = counter + 1
    End If
Next rngCell
MsgBox counter & " employees are reaching their contract expiration date!"

Range("A4:E13").Sort _
Key1:=Range("E4"), Order1:=xlAscending


End Sub

Однако, как мне включить строку кода, чтобы сообщить мне номер EE сотрудников, чей контракт истекает, который также будет отображаться в Msgbox?

Ответы [ 2 ]

1 голос
/ 25 февраля 2020

Создайте строку, которую хотите отобразить, когда найдете их

Dim str As String
For Each rngCell In rngData
    If rngCell.Value <> "" And rngCell.Value <= 4 Then
       str = str & vbCr & rngCell.Offset(0, -4).Value
       counter = counter + 1
    End If
Next rngCell
MsgBox counter & " employees are reaching their contract expiration date!" & str
0 голосов
/ 25 февраля 2020

Вы также можете просто создать список строк для отображения в конце l oop.

Private Sub workbook_open()
    Dim rngData As Range
    Dim rngCell As Range
    Dim expired As String
    Dim counter As Long: counter = 0
    Set rngData = Range("E4:E" & Cells(Rows.Count, Range("E3").Column).End(xlUp).Row)
    For Each rngCell In rngData
        If rngCell.Value = "4" Or rngCell.Value = "3" Or _
           rngCell.Value = "2" Or rngCell.Value = "1" And rngCell.Value <> "" Then
            counter = counter + 1
            '--- add to the list of expired EE Numbers
            expired = expired & rngCell.Offset(0, -4).Value & ","
        End If
    Next rngCell
    expired = Left$(expired, Len(expired) - 1)   'delete the trailing comma
    MsgBox counter & " employees are reaching their contract expiration date! (" & _
           expired & ")"
    Range("A4:E13").Sort Key1:=Range("E4"), Order1:=xlAscending
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...