2015-02-13 2 views
1

Я очень новичок в Excel VBA, и я пытаюсь написать код, который достигает следующего: Когда ячейка нажата в столбце A, в котором содержится текст «123» или «xyz «Ячейка в той же строке, но в столбце B записывает текущее время, а ячейка в той же строке, но в столбце C записывает имя пользователя, который нажал на него.SelectionChange, чтобы получить имя пользователя и дату

Ниже приведен код, я в настоящее время использую:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 

Dim RowNum As Long 
If Target.Cells.Count > 1 Then Exit Sub 
If Target.Column <> 1 Then Exit Sub 
If Not Target.Value.Text = 123 Then Exit Sub 
If Not Target.Value.Text = XYZ Then Exit Sub 

    RowNum = Target.Row 
    Range("B" & RowNum).Value = Date 
    Range("C" & RowNum).Value = Environ("UserName") 

End Sub 

В настоящее время я переменная не определена ошибка на XYZ, однако я чувствую, как будто есть довольно много других вопросов с моим кодом.

ответ

0

Вы не были слишком далеко. Я думаю, что это должно работать нормально:

Private Sub Worksheet_Change(ByVal Target As Range) '<-- event is change, non selection change 

Dim RowNum As Long 
If Target.Cells.Count > 1 Then Exit Sub 
If Target.Column <> 1 Then Exit Sub 
If (Target.Value = "123") Or (Target.Value = "xyz") Then '<-- if the value is either "xyz" or "123" 

    RowNum = Target.Row 
    Range("B" & RowNum).Value = Now() '<-- current time in column B 
    Range("C" & RowNum).Value = Environ("UserName") '<-- username in column C 

End If 

End Sub 
Смежные вопросы