Как вставить штамп имени пользователя, когда ячейка имеет определенное значение? - PullRequest
0 голосов
/ 22 февраля 2019

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

Пример,

Если для ячейки X14 установлено значение «Готово» или «Пропустить» пользователемзатем я хочу, чтобы в ячейке Z14 было имя пользователя, который сейчас работает в книге.И когда в ячейке больше нет слов «Готово» или «Пропустить», имя пользователя также исчезает.

Может ли кто-нибудь из вас помочь мне сделать это?желательно только формула excel, но VBA тоже хорош.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Используйте нижеприведенное, если вы ищете изменения для любой ячейки в Column X (, что Target.Column = 24 ) ...

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 24 And Target.Count = 1 Then
    If Target = "Done" Or Target = "Skip" Then
        Application.EnableEvents = False
            Target.Offset(0, 2) = Application.UserName
        Application.EnableEvents = True
    End If
End If

End Sub
0 голосов
/ 22 февраля 2019

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

Скопируйте и вставьте этот код в свой модуль листа и настройте<<< Настройте этот раздел >>>

Private Sub Worksheet_Change(ByVal Target As Range)

    ' Define object variables
    Dim statusRange As Range
    Dim changedCell As Range

    ' Define variables
    Dim currentUserName As String
    Dim userNameColumn As String
    Dim statusColumnNumber As Integer
    Dim statusValuesList As Variant

    ' <<< Customize this >>>
    Set statusRange = Range("X10:X100") ' Limit the cells that will record the status
    statusValuesList = Array("Done", "Skip") ' Add more status values separated by commas and inside quotes (this is not case-sensitive)
    userNameColumn = "Z" ' Column letter where the UserName is going to be stamped

    ' Prevent from firing other events while making changes to cells
    Application.EnableEvents = False

    ' Validate if cell changed belongs to valid column and rows and if it has a valid status
    If Not Intersect(Target, statusRange) Is Nothing Then

        For Each changedCell In Target

            If Not IsError(Application.Match(changedCell.Value, statusValuesList, 0)) Then

                ' Get current username
                currentUserName = Environ("Username")

            Else

                ' Empty username string
                currentUserName = vbNullString

            End If

            ' Assign username to cell in previously defined column and same row
            Range(userNameColumn & changedCell.Row).Value = currentUserName

        Next changedCell

    End If

    ' Reenable firing events
    Application.EnableEvents = True

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