Код работает в Excel 2010, но не в Office (Excel) 365, что изменилось? - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть простой код, который обновляет ячейку F с текущей датой и временем, когда что-то было изменено.

Попробовал еще раз в Excel 2010, и это не имеет проблемы.

Я пыталсязакомментировав строку .NumberFormat и она работала раньше, но теперь она больше не работает.

If Target.Row < 6 Then
    Exit Sub
End If

With Me.Cells(Target.Row, "F")
    .Value = CDbl(Now)
    .NumberFormat = "yyyy.mm.dd hh:mm:ss"
End With

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

Ответы [ 3 ]

1 голос
/ 19 сентября 2019

С переменной Target Я полагаю, вы обрабатываете события.Но ваш код также вызывает события, которые вы, вероятно, обрабатываете, что приводит к циклу событий, каждый из которых вызывает вас снова и снова.Вам нужно отключить события на время запуска макроса:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Row < 6 Then
        Exit Sub
    End If

    ' turn off events
    Application.EnableEvents = False
    With Me.Cells(Target.Row, "F")
        .Value = CDbl(Now)
        .NumberFormat = "yyyy.mm.dd hh:mm:ss"
    End With
    Application.EnableEvents = True
End Sub
0 голосов
/ 19 сентября 2019

Я сталкивался с этой проблемой раньше.Попробуйте это

If Selection.Row > 6 Then
    Exit Sub
End If

ActiveSheet.Cells(Selection.Row, 6) = Format(now,"yyyy.mm.dd hh:mm:ss")
0 голосов
/ 19 сентября 2019

Попробуйте это

If Selection.Row < 6 Then
    Exit Sub
End If

With ActiveSheet.Cells(Selection.Row, 6)
    .Value = Now
    .NumberFormat = "yyyy.mm.dd hh:mm:ss"
End With

Я предполагаю, что вы находитесь в активном листе, так как вы не раскрыли декларацию "Я и цель".Если нет, просто настройте его.

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