«Специальная вставка» в Excel. Горячие клавиши для специальной вставки на VBA
Итак, создадим новую книгу, сохраним ее под именем «Вставка.xls» и перейдем в Редактор Visual Basic (Alt+F11).
Вставим новый модуль «Insert->Module» (как создать макросы, описано здесь). Теперь добавим туда следующий код:
Sub ВставитьЗначАнгл()
‘Сочетание клавиш: Ctrl+q
ВставитьКак 1
End Sub
Sub ВставитьЗначРус()
‘Сочетание клавиш: Ctrl+й
ВставитьКак 1
End Sub
Sub ВставитьФормулаАнгл()
‘ Сочетание клавиш: Ctrl+e
ВставитьКак 2
End Sub
Sub ВставитьФормулаРус()
‘ Сочетание клавиш: Ctrl+у
ВставитьКак 2
End Sub
Процедуры «ВставкаЗначАнгл» и «ВставкаЗначРус» вставляют скопированную ячейку как значение.
Процедуры «ВставкаФормулаАнгл» и «ВставкаФормулаАнгл» вставляют как формулы.
Процедура «ВставитьКак (id as byte)»
id — идентификатор команды, указывающий как необходимо вставить (1- Значения, 2 — Формулы, . )
Внимание: Если не предусмотреть проверку копирования ячейки, то при отсутствии скопированных ячеек, выполнение макроса завершится ошибкой.
Для того чтоб сократить код программы, я вынес весь функционал в отдельную процедуру ВставитьКак, иначе б пришлось в каждой процедуре дублировать один и тот же код.
В процедурах «ВставкаЗначАнгл«, «ВставкаЗначРус«, «ВставкаФормулаАнгл» и «ВставкаФормулаАнгл» происходит вызов процедуры ВставитьКак с указанием в ней идентификатора команды 1 или 2.
Закрываем редактор Visual Basic и переходим в окно управления макросами «Сервис->Макрос->Макросы. » (Alt+F8). Мы видим наши четыре макроса:
Теперь необходимо каждому макросу присвоить горячую клавишу. Запуск макросов в Excel может осуществляться с помощью комбинации «Ctrl + назначенная клавиша«. Из клавиш, сочетающихся с ctrl, я нашел свободные Q(Й) и E(У). Для удобства в самый раз, нажатие левой рукой(правая с мышей) и клавиши не далеко друг от друга, вот правда сосед опасный, ctrl+w — закрывает книгу.
Выбираем макрос «ВставкаЗначАнгл«, жмем кнопку «Параметры. «
в открывшемся окне, там где «сочетание клавиш», указываем «q«. Жмем «ОК«. Затем присвоим клавишу «й» для «ВставкаЗначРус«.
Просто в Excel, сочетание CTRL с одной и той же клавишей, но в разных раскладках(RU, EN), почему-то отличаются. Поэтому, для того чтоб вставка произошла при любой раскладке клавиатуры, и сделано по два макроса с присвоенными им клавишами в разной раскладке.
Аналогично присвойте клавиши «e» и «у» процедурам «ВставкаФормулаАнгл» и «ВставкаФормулаАнгл«.
Затем, в Excel необходимо открыть окно «Надстройки» (Сервис->Надстройки. )
Щелкнуть «Обзор» и выбрать сохраненную нами надстройку «Вставка.xla«. В списке должна появится новая надстройка «Вставка», если не стоит галочка, то отметьте ее. Жмем ОК.
Данный макрос также работает и в более поздних версиях Excel (2007-2010). Где найти окно «Надстройки» в Excel 2007-2010 читайте в статье «Открываем панель «Разработчик» в Excel 2010«.
А на этом все. Благодарю за внимание. Надеюсь статья для Вас будет полезна.
[expert_bq id=»1570″]Например, Вам в руки попадает вот такой шаблон смотрите ниже , предоставленный компанией, чтобы заполнить отчёт о расходах при посещении конференции. Если же вы хотите что-то уточнить, обращайтесь ко мне![/expert_bq] Замечание: Убедитесь, что имеется достаточно места для вставки данных. Не выделяйте всю строку или столбец, если не располагаете достаточным количеством свободного места. Убедитесь, что новые данные не будут записаны поверх существующих и нужных Вам.Vba excel обращение к ячейке
Другое применение транспонирования, которое мне очень нравится, — это копирование данных из какого-либо источника и добавление их в текущую таблицу. Это отличный способ собирать воедино и приводить в соответствие данные из двух различных источников. Все данные будут выглядеть единообразно, и Вы с легкостью сможете настроить формулы.
Excel vba записать значение в ячейку
В данной статье мы будем учиться писать VBA код, чтобы управлять содержимым ячеек, самими ячейками и листами.
Запись значений в ячейку
Для начала откроем редактор, добавим модуль, скопируем туда этот макрос:
Мы обратились к ячейке A1 . Теперь давайте попробуем управлять данной ячейкой. Чтобы увидеть, что мы можем сделать, добавим точку после Range («A1»).
Выберите значение Value и нажмите Tab. Получим такой код:
Попробуем теперь записать текст в ячейку (когда присваиваем текстовое значение, его нужно брать в двойные кавычки «»):
Заметим, что макрос будет отображать значение в том листе, который вы последний раз открывали. Поэтому, чтобы управлять содержимым ячейки на любом листе книги, нам нужно будет прописать полный путь к ячейке, а именно добавить впереди кода название листа, например:
Вариант 1. Обращаемся по названию листа — Sheets(«Sheet2»).
Вариант 2. Обращаемся не по названию листа, а по его порядковому номеру — Sheets(2).
Аналогично, если мы хотим обратиться к ячейке в другой книге, нам нужно в начале кода прописать название книги:
Хотя мы указываем параметр Value в наших примерах, на самом деле его можно не использовать, поскольку он стоит по умолчанию. То есть, эти две строки кода будут эквивалентными:
Удаление значений
Удалим значение 35 из ячейки A1, которое мы записали в начале урока:
Форматирование значений
Если вы выберете значение Font , то появится список параметров, которые вы сможете применить к ячейке:
Форматирование: изменение размера текста
Давайте присвоим ячейке значение 35 и уменьшим размер шрифта до 8:
Работа с Excel — записать в ячейку значение из TextBox
Что еще можно почитать
Дозапись в файл на FTP (Декабрь 8, 2015)
Генератор QR-кода на VB .NET (Март 13, 2016)
Получить имя компьютера по его IP-адресу (Декабрь 4, 2015)
13 комментариев: Работа с Excel — записать в ячейку значение из TextBox
Добрый вечер!
Как сделать, что б запись выполнялась в пустую строку таблицы excel т.е. программа ищет пустую стоку и в нее записывает значение?
@ Игорь:
Добрый.
Вам нужен UsedRange, можете загуглить.
В cells второй параметр — это и есть индекс столбца. Там указана 1, т.е. первый столбец. Вы пишите нужный.
Что Вас смущает?
VBA Excel. Ячейки (обращение, запись, чтение, очистка)
Обращение к ячейке на листе Excel из кода VBA. Запись информации в ячейку. Чтение информации из ячейки. Очистка значения ячейки. Метод ClearContents объекта Range.
Обращение к ячейке
Допустим, у нас есть два открытых файла: «Книга1» и «Книга2», причем, файл «Книга1» активен и в нем находится исполняемый код VBA.
В общем случае при обращении к ячейке неактивной рабочей книги «Книга2» из кода файла «Книга1» прописывается полный путь:
Удобнее обращаться к ячейке через свойство рабочего листа Cells(номер строки, номер столбца), так как вместо номеров строк и столбцов можно использовать переменные. Обратите внимание, что при обращении к любой рабочей книге, она должна быть открыта, иначе произойдет ошибка. Закрытую книгу перед обращением к ней необходимо открыть.
Теперь предположим, что у нас в активной книге «Книга1» активны «Лист1» и ячейка на нем «A1». Тогда обращение к ячейке «A1» можно записать следующим образом:
Точно также можно обращаться и к другим ячейкам активного рабочего листа, кроме обращения ActiveCell, так как активной может быть только одна ячейка, в нашем примере — это ячейка «A1».
Если мы обращаемся к ячейке на неактивном листе активной рабочей книги, тогда необходимо указать этот лист:
Имя ярлыка может совпадать с основным именем листа. Увидеть эти имена можно в окне редактора VBA в проводнике проекта. Без скобок отображается основное имя листа, в скобках — имя ярлыка.
Запись информации в ячейку
Содержание ячейки определяется ее свойством «Value», которое в VBA Excel является свойством по умолчанию и его можно явно не указывать. Записывается информация в ячейку при помощи оператора присваивания «=»:
Вместе с числами и текстом можно использовать переменные. Примеры здесь и ниже приведены для активного листа. Для неактивных листов дополнительно необходимо указывать имя листа, как в разделе «Обращение к ячейке».
Чтение информации из ячейки
Считать информацию из ячейки в переменную можно также при помощи оператора присваивания «=»:
Точно также можно обмениваться информацией между ячейками:
Очистка значения ячейки
Очищается ячейка от значения с помощью метода ClearContents. Кроме того, можно присвоить ячейке значение нуля или пустой строки:
Чтение и запись значения ячейки в VBA
В приложении Excel все данные как правило находятся в ячейках на листах, с которыми макросы работают как с базой данных. Поэтому, начинающему программисту VBA важно понимать как читать значения из ячейки Excel в переменные или массивы и, наоборот, записывать какие-либо значения на лист в ячейки.
Обращение к конкретной ячейке
Прежде чем читать или записывать значение в ячейке, нужно определиться с тем, как можно указать какая именно ячейка нам необходима.
Полный путь к ячейке A1 в Книге1 на Листе1 можно записать двумя вариантами:
Пример 1: Обратиться к ячейке A3 находящейся в Книге1 на Листе1
Однако, как правило, полный путь редко используется, т.к. макрос работает с Книгой, в которой он записан и часто на активном листе. Поэтому путь к ячейке можно сократить и написать просто:
Пример 2: Обратиться к ячейке A1 в текущей книге на активном листе
Если всё же путь к книге или листу необходим, но не хочется его писать при каждом обращении к ячейкам, можно использовать конструкцию With End With. При этом, обращаясь к ячейкам, необходимо использовать в начале «.» (точку).
Пример 3: Обратиться к ячейке A1 и B1 в Книге1 на Листе2.
Так же, можно обратиться и к активной (выбранной в данный момент времени) ячейке.
Пример 4: Обратиться к активной ячейке на Листе3 текущей книги.
Чтение значения из ячейки
Есть 3 способа получения значения ячейки, каждый из которых имеет свои особенности:
- Value2 — базовое значение ячейки, т.е. как оно хранится в самом Excel-е. В связи с чем, например, дата будет прочтена как число от 1 до 2958466, а время будет прочитано как дробное число. Value2 — самый быстрый способ чтения значения, т.к. не происходит никаких преобразований.
- Value — значение ячейки, приведенное к типу ячейки. Если ячейка хранит дату, будет приведено к типу Date. Если ячейка отформатирована как валюта, будет преобразована к типу Currency (в связи с чем, знаки с 5-го и далее будут усечены).
- Text — визуальное отображение значения ячейки. Например, если ячейка, содержит дату в виде «число месяц прописью год», то Text (в отличие от Value и Value2) именно в таком виде и вернет значение. Использовать Text нужно осторожно, т.к., если, например, значение не входит в ячейку и отображается в виде «#####» то Text вернет вам не само значение, а эти самые «решетки».
По-умолчанию, если при обращении к ячейке не указывать способ чтения значения, то используется способ Value.
Пример 5: В ячейке A1 активного листа находится дата 01.03.2018. Для ячейки выбран формат «14 марта 2001 г.». Необходимо прочитать значение ячейки всеми перечисленными выше способами и отобразить в диалоговом окне.
Пример 6: В ячейке С1 активного листа находится значение 123,456789. Для ячейки выбран формат «Денежный» с 3 десятичными знаками. Необходимо прочитать значение ячейки всеми перечисленными выше способами и отобразить в диалоговом окне.
При присвоении значения переменной или элементу массива, необходимо учитывать тип переменной. Например, если оператором Dim задан тип Integer, а в ячейке находится текст, при выполнении произойдет ошибка «Type mismatch». Как определить тип значения в ячейке, рассказано в следующей статье.
Пример 7: В ячейке B1 активного листа находится текст. Прочитать значение ячейки в переменную.
Таким образом, разница между Text, Value и Value2 в способе получения значения. Очевидно, что Value2 наиболее предпочтителен, но при преобразовании даты в текст (например, чтобы показать значение пользователю), нужно использовать функцию Format.
Запись значения в ячейку
Осуществить запись значения в ячейку можно 2 способами: с помощью Value и Value2. Использование Text для записи значения не возможно, т.к. это свойство только для чтения.
Пример 8: Записать в ячейку A1 активного листа значение 123,45
Пример 9: Записать в ячейку A2 активного листа дату 1 марта 2018 года
В данном примере тоже запишется одно и то же значение в ячейку A2 активного листа.
Визуальное отображение значения на экране будет зависеть от того, какой формат ячейки выбран на листе.
Запись значения в ячейку, которая не вызывает функцию, через функцию VBA
Мне интересно, можно ли записывать значения в ячейку в Excel через функцию VBA?
Но следующим пустышки Sub будет работать правильно:
Есть ли что-то, что нужно сделать, чтобы быть в состоянии записать в ячейку, которая не является ячейкой, вызывающей конкретную функцию?
может быть это временное решение может сделать для вас:
место следующие подвиды в кодовой области рабочего листа вы хотите использовать Function OffsetValue() в:
Если вы не хотите удалять звонок OffsetValue() из той ячейки, которую вы написали, а затем просто удалить/комментарий Target.ClearContents
это только базовый код, который вы можете улучшить с:
некоторые проверка Target диапазона, передаваемым в Worksheet_Change()
вы можете проверить, если он соответствует конкретным Значение (например: проверка Target.Value с некоторым диапазоном значений) или Диапазон (например: проверка Target сам диапазон, принадлежащий предопределенному Range ) критерии
обрабатывать ту же потребность на протяжении всей книги
, то вы должны переключиться на использование обработчика Sub ThisWorkbook_Change() событий в коде панели ThisWorkbook
Как вставить скопированные ячейки в Excel — Специальная вставка в Excel. Горячие клавиши для специальной вставки на VBA — Как в офисе.
- Value2 — базовое значение ячейки, т.е. как оно хранится в самом Excel-е. В связи с чем, например, дата будет прочтена как число от 1 до 2958466, а время будет прочитано как дробное число. Value2 — самый быстрый способ чтения значения, т.к. не происходит никаких преобразований.
- Value — значение ячейки, приведенное к типу ячейки. Если ячейка хранит дату, будет приведено к типу Date. Если ячейка отформатирована как валюта, будет преобразована к типу Currency (в связи с чем, знаки с 5-го и далее будут усечены).
- Text — визуальное отображение значения ячейки. Например, если ячейка, содержит дату в виде «число месяц прописью год», то Text (в отличие от Value и Value2) именно в таком виде и вернет значение. Использовать Text нужно осторожно, т.к., если, например, значение не входит в ячейку и отображается в виде «#####» то Text вернет вам не само значение, а эти самые «решетки».
Теперь необходимо каждому макросу присвоить горячую клавишу. Запуск макросов в Excel может осуществляться с помощью комбинации «Ctrl + назначенная клавиша«. Из клавиш, сочетающихся с ctrl, я нашел свободные Q(Й) и E(У). Для удобства в самый раз, нажатие левой рукой(правая с мышей) и клавиши не далеко друг от друга, вот правда сосед опасный, ctrl+w — закрывает книгу.
Vba excel обращение к ячейке
В приложении Excel все данные как правило находятся в ячейках на листах, с которыми макросы работают как с базой данных. Поэтому, начинающему программисту VBA важно понимать как читать значения из ячейки Excel в переменные или массивы и, наоборот, записывать какие-либо значения на лист в ячейки.
Обращение к конкретной ячейке
Прежде чем читать или записывать значение в ячейке, нужно определиться с тем, как можно указать какая именно ячейка нам необходима.
Полный путь к ячейке A1 в Книге1 на Листе1 можно записать двумя вариантами:
Пример 1: Обратиться к ячейке A3 находящейся в Книге1 на Листе1
Однако, как правило, полный путь редко используется, т.к. макрос работает с Книгой, в которой он записан и часто на активном листе. Поэтому путь к ячейке можно сократить и написать просто:
Пример 2: Обратиться к ячейке A1 в текущей книге на активном листе
Если всё же путь к книге или листу необходим, но не хочется его писать при каждом обращении к ячейкам, можно использовать конструкцию With End With. При этом, обращаясь к ячейкам, необходимо использовать в начале «.» (точку).
Пример 3: Обратиться к ячейке A1 и B1 в Книге1 на Листе2.
Так же, можно обратиться и к активной (выбранной в данный момент времени) ячейке.
Пример 4: Обратиться к активной ячейке на Листе3 текущей книги.
Чтение значения из ячейки
Есть 3 способа получения значения ячейки, каждый из которых имеет свои особенности:
- Value2 – базовое значение ячейки, т.е. как оно хранится в самом Excel-е. В связи с чем, например, дата будет прочтена как число от 1 до 2958466, а время будет прочитано как дробное число. Value2 – самый быстрый способ чтения значения, т.к. не происходит никаких преобразований.
- Value – значение ячейки, приведенное к типу ячейки. Если ячейка хранит дату, будет приведено к типу Date. Если ячейка отформатирована как валюта, будет преобразована к типу Currency (в связи с чем, знаки с 5-го и далее будут усечены).
- Text – визуальное отображение значения ячейки. Например, если ячейка, содержит дату в виде «число месяц прописью год», то Text (в отличие от Value и Value2) именно в таком виде и вернет значение. Использовать Text нужно осторожно, т.к., если, например, значение не входит в ячейку и отображается в виде «#####» то Text вернет вам не само значение, а эти самые «решетки».
По-умолчанию, если при обращении к ячейке не указывать способ чтения значения, то используется способ Value.
Пример 5: В ячейке A1 активного листа находится дата 01.03.2018. Для ячейки выбран формат «14 марта 2001 г.». Необходимо прочитать значение ячейки всеми перечисленными выше способами и отобразить в диалоговом окне.
Пример 6: В ячейке С1 активного листа находится значение 123,456789. Для ячейки выбран формат «Денежный» с 3 десятичными знаками. Необходимо прочитать значение ячейки всеми перечисленными выше способами и отобразить в диалоговом окне.
При присвоении значения переменной или элементу массива, необходимо учитывать тип переменной. Например, если оператором Dim задан тип Integer, а в ячейке находится текст, при выполнении произойдет ошибка «Type mismatch». Как определить тип значения в ячейке, рассказано в следующей статье.
Пример 7: В ячейке B1 активного листа находится текст. Прочитать значение ячейки в переменную.
Таким образом, разница между Text, Value и Value2 в способе получения значения. Очевидно, что Value2 наиболее предпочтителен, но при преобразовании даты в текст (например, чтобы показать значение пользователю), нужно использовать функцию Format.
Запись значения в ячейку
Осуществить запись значения в ячейку можно 2 способами: с помощью Value и Value2. Использование Text для записи значения не возможно, т.к. это свойство только для чтения.
Пример 8: Записать в ячейку A1 активного листа значение 123,45
Пример 9: Записать в ячейку A2 активного листа дату 1 марта 2018 года
В данном примере тоже запишется одно и то же значение в ячейку A2 активного листа.
Визуальное отображение значения на экране будет зависеть от того, какой формат ячейки выбран на листе.
Как обратиться к ячейке по ее имени ?
Q: Как обратиться к ячейки по ее имени ? Т.е. есть Лист1 и в нем ячейки с именем Дебет и Кредит. Хочy подсчитать Дебет-Кредит средствами Excel VBA. Попробовал Range(Дебет)-Range(Кредит), ругается, что не описаны переменные.
A: Если я правильно тебя понял, нужно разыменовать ячейку из кода Excel VBA. Вот фрагмент кода, который решает такую задачу:
Обращение к ячейке на листе Excel из кода VBA. Запись информации в ячейку. Чтение информации из ячейки. Очистка значения ячейки. Метод ClearContents объекта Range.
Обращение к ячейке
Допустим, у нас есть два открытых файла: «Книга1» и «Книга2», причем, файл «Книга1» активен и в нем находится исполняемый код VBA.
В общем случае при обращении к ячейке неактивной рабочей книги «Книга2» из кода файла «Книга1» прописывается полный путь:
Удобнее обращаться к ячейке через свойство рабочего листа Cells(номер строки, номер столбца), так как вместо номеров строк и столбцов можно использовать переменные. Обратите внимание, что при обращении к любой рабочей книге, она должна быть открыта, иначе произойдет ошибка. Закрытую книгу перед обращением к ней необходимо открыть.
Теперь предположим, что у нас в активной книге «Книга1» активны «Лист1» и ячейка на нем «A1». Тогда обращение к ячейке «A1» можно записать следующим образом:
Точно также можно обращаться и к другим ячейкам активного рабочего листа, кроме обращения ActiveCell, так как активной может быть только одна ячейка, в нашем примере – это ячейка «A1».
Если мы обращаемся к ячейке на неактивном листе активной рабочей книги, тогда необходимо указать этот лист:
Имя ярлыка может совпадать с основным именем листа. Увидеть эти имена можно в окне редактора VBA в проводнике проекта. Без скобок отображается основное имя листа, в скобках – имя ярлыка.
Запись информации в ячейку
Содержание ячейки определяется ее свойством «Value», которое в VBA Excel является свойством по умолчанию и его можно явно не указывать. Записывается информация в ячейку при помощи оператора присваивания «=»:
Вместе с числами и текстом можно использовать переменные. Примеры здесь и ниже приведены для активного листа. Для неактивных листов дополнительно необходимо указывать имя листа, как в разделе «Обращение к ячейке».
Чтение информации из ячейки
Считать информацию из ячейки в переменную можно также при помощи оператора присваивания «=»:
Точно также можно обмениваться информацией между ячейками:
Очистка значения ячейки
Очищается ячейка от значения с помощью метода ClearContents. Кроме того, можно присвоить ячейке значение нуля или пустой строки:
VBA Excel. Ячейки (обращение, запись, чтение, очистка) : 65 комментариев
надо на Лист3 в cells (2, 6) вывести второе наибольшее значение из Range («F4:D12») Лист1
на формулах это будет так :
F2=НАИБОЛЬШИЙ(Лист1! F4:D12;2)
Здравствуйте, как записать число в ячейку, если есть OptionButton.
То есть 4 варианта ответа, при выборе правильного в ячейку записывается 1, если нет то 0.
Привет, Руслан!
Допустим, правильный ответ соответствует выбору OptionButton3, тогда
Добрый день!
как узнать номер страницы ( которая будет отпечатана) для ячейки?
Добрый день, Александр!
Если я правильно понял вопрос, имя листа вы можете узнать в окне редактора VBA в проводнике проекта, который обычно расположен слева.
Без скобок отображается основное имя листа, которое используется так: Лист1.Cells(1, 1) = 33 .
В скобках отображается имя ярлыка, которое используется так: Sheets(«Имя ярлыка»).Cells(2, 1) = 22 .
Добрый день!
Можно ли реализовать следующий алгоритм: Ячейка, допустим N=A+B+C+. +(N-1). Если сумма ячейки N
Привет, Илья!
Эта задача в подавляющем большинстве случаев не имеет решения из-за редко выполнимого условия: «пока N не станет равным X». Она всегда будет иметь решение только при условии: «пока N не станет больше или равным X». Если второй вариант интересует, напишите.
Доброе утро, Илья!
Чтобы пример был рабочим, заменим в формуле N=A+B+C+. +(N-1) условные обозначения ячеек переменными:
N на n,
A на a,
B+C+. на y,
ячейку для сравнения X на x, тогда
Когда вставляю функцию в ячейку, то после ConV открывается автоматом скобка (зачем. ) а потом ругается на имя файла.
Понимаю что туплю, но не хочу заново лопатить весь VBA.
Если не трудно, подскажите правильный путь
Привет, Константин!
Функции должно присваиваться возвращаемое значение, текст («Евро») в коде функции заключается в прямые кавычки:
код подсказки удален, так как оказался ошибочным
Пока не помогло.
Сейчас выглядит так:
код с ошибочной подсказкой удален
Адрес ячейки, в которую записывается результат в вашем примере, надо заменить на имя функции:
Сообщите о результатах. Тесты показали, что работает, но обновляется значение в ячейке с функцией только после вставки в нее курсора и нажатия клавиши Enter.
Не знаю, решит ли это ваши задачи, но я предложил бы следующую полностью рабочую функцию:
Вставляете в мастере функций начальные ячейки, ячейку kurs делаете абсолютной и функцию можно копировать протягиванием.
Добрый день, Евгений!
Спасибо, все работает. И первый вариант но с Enter, и второй без него.
VBA – РАБОЧИЙ ЯЗЫК EXCEL
- Value2 – базовое значение ячейки, т.е. как оно хранится в самом Excel-е. В связи с чем, например, дата будет прочтена как число от 1 до 2958466, а время будет прочитано как дробное число. Value2 – самый быстрый способ чтения значения, т.к. не происходит никаких преобразований.
- Value – значение ячейки, приведенное к типу ячейки. Если ячейка хранит дату, будет приведено к типу Date. Если ячейка отформатирована как валюта, будет преобразована к типу Currency (в связи с чем, знаки с 5-го и далее будут усечены).
- Text – визуальное отображение значения ячейки. Например, если ячейка, содержит дату в виде «число месяц прописью год», то Text (в отличие от Value и Value2) именно в таком виде и вернет значение. Использовать Text нужно осторожно, т.к., если, например, значение не входит в ячейку и отображается в виде «#####» то Text вернет вам не само значение, а эти самые «решетки».
Таким образом, разница между Text, Value и Value2 в способе получения значения. Очевидно, что Value2 наиболее предпочтителен, но при преобразовании даты в текст (например, чтобы показать значение пользователю), нужно использовать функцию Format.