Вмъкването на дата и час в Excel с помощта на VBA е толкова просто, колкото писането на формула в клетка.
Кодът на времевата марка VBA е:
Диапазон („A1“). Стойност = Формат (сега, "mm/dd/yyyy HH: mm: ss")Този код ще покаже текущата дата и час в клетка A1. И да, това е всичко. готово е.
Функцията “Now” връща текущата дата и час, а функцията “Format” форматира изхода във формат “mm/dd/yyyy HH: mm: ss”.
Показвайте датата и часа, когато се прави промяна с помощта на VBA.
Да предположим, че сте подготвили лист. В този лист искате времето да се показва в колона Б, когато някой прави запис Колона А.
Сега се нуждаем от код за времева маркировка VBA, който се изпълнява всеки път, когато се направи промяна в колона А.
Кодът по -долу улеснява работата.
Стартиране на макрос при извършване на промяна (манипулатор на събития за смяна на работен лист)
Private Sub Worksheet_Change (ByVal Target As Range) If Not Intersect (Target, Range ("A: A")) Is Nothing thenOn Error Resume Next If Target.Value = "" ThenTarget.Offset (0, 1) = "" Else Target .Offset (0, 1) .Value = Format (Сега, "mm/dd/yyyy HH: mm: ss") End If End If End Sub
За да стартирате този код, отворете VBA и щракнете двукратно върху листа в прозореца на проекта, на който искате да покажете времевата отметка.
Сега трябва да използваме VBA манипулатор на събития, тъй като искаме да стартираме нашия код, за да се изпълнява всеки път, когато се направи промяна.
От падащото меню над вашия код изберете Работен лист.
Сега в непосредствена близост до падащия работен лист ще видите друг падащ. Той съдържа много манипулатори на събития. Засега изберете „промяна“.
Сега копирайте горния код тук.
И е направено. Върнете се към вашия лист и го проверете.
Код Обяснение:
- Кодът е написан на лист 1 чрез двукратно щракване върху него. Това означава, че вашият код принадлежи само на този лист.
- Използвахме манипулатора на събития „Промяна“ на „Работен лист“, за да задействаме нашия VBA код.
-
Частен под работен лист_Смяна (ByVal Target As Range)
Това е фиксирано и подразбиращо се име на подпрограма на манипулатор на събития за промяна.
- Искаме нашият код да изпълнява промяна се прави само в колона А.
-
Ако не се пресичат (Цел, Обхват ("A: A")) Няма нищо
Този ред проверява дали променената клетка е в колона А или не.
- Сега, ако горният ред връща True, тогава тези редове се изпълняват
Включване на грешка Следваща, ако Target.Value = "" ThenTarget.Offset (0, 1) = "" ElseTarget.Offset (0, 1) .Value = Format (Сега, "mm/dd/yyyy HH: mm: ss")
Първият ред игнорира изскачащата грешка и изпълнява тези два реда. Ако пропуснете Вкл Грешка възобновяване Следваща ще видите грешка, която се появява, когато изтриете стойност в колона А.
Ако Target.Value = "" Тогава
:- Този ред проверява дали клетка в колона А е празна. Ако да тогава
Target.Offset (0, 1) = ""
:- Този ред изтрива съседна стойност на клетката.
И ако е невярно
Else Target.Offset (0, 1) .Value = Format (Сега, "mm/dd/yyyy HH: mm: ss")
:- Този ред въвежда текущия час и дата в съседна на колона А.
- И последните три реда просто затварят съответния си блок. И това е направено. Сега имате лист, който дава точно време на промяна, направено в клетка от колона А.
Може би сте забелязали, че в падащия списък има няколко манипулатори на събития. Играйте около тях. Опитайте се да разберете какво работи всеки манипулатор на събития. И ако имате затруднения, запишете го в секцията за коментари.
Вмъкнете дата и час с VBA