Range / Свойство
Range.Value
Значение — Значение ячейки с учётом типа Excel, в том числе валюта и дата как Date.
Value([RangeValueDataType]) As Variant
Когда использовать
Когда важна семантика типа Excel. Для массового обмена с массивом чаще лучше Value2: даты приходят числами, без Currency.
Версии и среда
Excel 2007–365
Минимальный пример
Dim v As Variant
v = ws.Range("A1").Value
If IsDate(v) Then Debug.Print Format(v, "yyyy-mm-dd")
Типичный сбой
Сравнение Value с строкой «1» ломается, если в ячейке число 1.
Рецепты
-
Когда Value, когда Value2, когда Text
Даты «превращаются в числа», суммы не сходятся, в коде то строка, то Date.
-
Сравнить две книги по коду и подсветить расхождения красным
Нужно сверить номенклатуру и количества в двух выгрузках и сразу увидеть, что не сошлось, в обеих книгах.
-
Сдвинуть график вправо и залить дни пути
Вахтовый график в строке нужно сдвинуть на N дней, первые ячейки заполнить «Т», цвета вернуть условным форматированием.
-
Подготовить отчёт Яндекс Такси и сделать PDF по каждому ФИО
Выгрузка с лишними строками и 24 столбцами, а нужен узкий лист и отдельный PDF на каждого сотрудника.
Рядом в Range
Find Copy PasteSpecial ClearContents SpecialCells Value2 Text Formula