Да се научим да работим с Excel - тема [4]

  • 31 335
  • 196
  •   1
Отговори
# 195
  • Агент под прикритие
  • Мнения: 11 589
Трябва да ползваш събитието Worksheet_Change. Когато отвориш Visual Basic-а в Excel, намираш си Project панела вляво и там търсиш въпросния лист, в който ще се прави това. Щракаш два пъти на него, за да ти се появи прозореца за код и там пускаш следното:
Код:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.CountLarge > 1 Then Exit Sub
If Not Intersect(Target, Range("A:A")) Is Nothing Then
    If Target.Value = vbNullString Then
        Target.Offset(, 1).Value = vbNullString
    Else
        Target.Offset(, 1).Value = Now
    End If
End If

End Sub
Този код ще "слухти" за промяна в колона А (А:А) и при всяка такава, ще слага днешна дата в съседната колона. За да стане по-ясно, можеш да смениш формата на клетките в колона B на примерно
Цитат
dd.mm.yyyy hh : mm : ss
Сложих нарочно интервали между часа, минутите и секундите, в действителност е без, форума го отчита като емотикони.
и така ще виждаш дори секундите.
Горния код проверява също така дали си изтрила клетката в колона А и съответно чисти датата вдясно. Ако искаш и триенето на съдържание на клетка да се отчита като промяна, проверката за празна стойност в колона А  се маха:
Код:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.CountLarge > 1 Then Exit Sub
If Not Intersect(Target, Range("A:A")) Is Nothing Then
     Target.Offset(, 1).Value = Now
End If

End Sub
При промяна в коя да е колона, различна от A, кода няма да прави нищо.

Внимавай къде пускаш кода. Ако го пуснеш в друг лист, ще работи там, а не в този, който искаш, а ако е в ThisWorkbook, практически няма да работи.

Последна редакция: ср, 21 фев 2024, 22:16 от Phoenix Wright

# 196
  • София
  • Мнения: 17 775
Жив и здрав да си, Фениксе. Сложих го, работи успешно. Beer

Общи условия

Активация на акаунт