1

Я пытаюсь собрать макрос, который вставит отметку времени.

У меня есть 2 листа input и dashboard

Когда ячейка A2 на input изменяется, я хочу использовать функцию NOW для ячейки M8 на dashboard

Я нажал alt + F11 на листе input чтобы вызвать редактор vba, и использовал:

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address = "$A$2" Then

        Sheets("Dashboard").Select
        Range("M8").Select
        ActiveCell.FormulaR1C1 = "=NOW()"
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False

    End If

End Sub

Это терпит неудачу в линии:

Range("M8").Select

что не так с кодом?

1 ответ1

2

Это связано с тем, что в коде рабочей таблицы, если вы не указываете родительский элемент для диапазона, предполагается, что лист, в котором находится код, не является активным листом, как модуль. Таким образом, input больше не активен, вы не можете выбрать ячейку на этом листе.

Вы можете заменить все, что есть в вашей IF, одной строкой:

Worksheets("Dashboard").Range("M8").Value2 = Now()

Он будет вставлять текущую дату / время в качестве значения, а не формулы и без необходимости выбирать или активировать что-либо.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .