Приветствую, дорогие читатели!
В этой статье давайте рассмотрим функцию, которая определяет тип данных ячейки в Excel. Она базируется на встроенных функциях Excel, таких как ЕНЕТЕКСТ(), ЕЛОГИЧ() и ЕОШИБКА(), а также на поддержке VBA для функций IsEmpty (пусто), IsDate (дата) и IsNumeric (число).
Назовём её (нашу функцию) ТипЯчейки. Эта функция принимает в качестве аргумента ячейку и возвращает строку, описывающую тип данных левой верхней ячейки этого диапазона. Возможные типы данных включают "Пусто", "Текст", "Булево выражение", "Ошибка", "Дата", "Время" или "Число". Функцию можно использовать как в формулах на листе Excel, так и вызывать из других процедур VBA.
На приведенных скриншотах ниже демонстрируется пример использования этой функции в формулах, введенных в столбце D. Формулы используют данные из столбца C в качестве аргумента, а в столбце E отображается описание данных, определенное функцией ТипЯчейки.
И конечно, давайте разберем эту функцию построчно:
- Function ТипЯчейки(Rng): Это объявление функции с именем "ТипЯчейки", которая принимает один аргумент Rng, представляющий диапазон ячеек или ячейку.
- Dim Ячейка As Range: Здесь создается переменная Ячейка типа Range, которая будет использоваться для обращения к ячейке в указанном диапазоне.
- Set Ячейка = Rng.Range("A1"): Эта строка устанавливает переменную Ячейка равной левой верхней ячейке указанного диапазона Rng.
- Select Case True: Здесь начинается блок оператора выбора Select Case, который будет оценивать различные условия.
- Case IsEmpty(Ячейка): Если ячейка пуста, то результату присваивается строка "Пусто".
- Case Ячейка.NumberFormat = "@": Если формат ячейки текстовый, то результату присваивается строка "Текст".
- Case Application.IsText(Ячейка): Если ячейка содержит текст, то результату также присваивается строка "Текст".
- Case Application.IsLogical(Ячейка): Если в ячейке логическое выражение, то результату присваивается строка "Булево выражение".
- Case Application.IsErr(Ячейка): Если в ячейке ошибка, то результату присваивается строка "Ошибка".
- Case IsDate(Ячейка): Если в ячейке дата, то результату присваивается строка "Дата".
- Case InStr(1, Ячейка.Text, ":") <> 0: Если в тексте ячейки есть символ ":", то считается, что это время, и результату присваивается строка "Время".
- Case IsNumeric(Ячейка): Если в ячейке число, то результату присваивается строка "Число".
- End Select: Этот оператор завершает блок выбора.
- End Function: Это ключевое слово завершает определение функции.