VBA-Урок 5. Характеристики (Properties)

VBA-Урок 5. Характеристики (Properties)

В данной статье мы будем обучаться писать VBA код, чтоб управлять содержимым ячеек, самими ячейками и листами.

1. Запись значений в ячейку

Для начала откроем редактор, добавим модуль, скопируем туда этот макрос:

Мы обратились к ячейке A1 . Сейчас давайте попробуем управлять данной ячейкой. Чтоб узреть, что мы можем создать, добавим точку опосля Range ("A1").

Изберите значение Value и нажмите Tab. Получим таковой код:

Значение Value показывает содержимое ячейки.

Сейчас давайте запишем значение 35 в ячейку A1:

Попробуем сейчас записать текст в ячейку (когда присваиваем текстовое значение, его необходимо брать в двойные кавычки «»):

Заметим, что макрос будет показывать значение в том листе, который вы крайний раз открывали. Потому, чтоб управлять содержимым ячейки на любом листе книжки, нам необходимо будет прописать полный путь к ячейке, а конкретно добавить впереди кода заглавие листа, к примеру:

Вариант 1. Обращаемся по наименованию листа — Sheets(«Sheet2»).

Вариант 2. Обращаемся не по наименованию листа, а по его порядковому номеру — Sheets(2).

Аналогично, если мы желаем обратиться к ячейке в иной книжке, нам необходимо в начале кода прописать заглавие книжки:

Хотя мы указываем параметр Value в наших примерах, по сути его можно не употреблять, так как он стоит по дефлоту. Другими словами, эти две строчки кода будут эквивалентными:

2. Удаление значений

Удалим значение 35 из ячейки A1, которое мы записали в начале урока:

3. Форматирование значений

Если вы выберете значение Font , то покажется перечень характеристик, которые вы можете применить к ячейке:

Форматирование: изменение размера текста

Давайте присвоим ячейке значение 35 и уменьшим размер шрифта до 8:

Как работать с Excel через VBA либо объектная модель Excel

Перед созданием собственной первой программки в Excel нужно разобраться в объектную модели приложения. Имея точное осознания о объектной модели Excel вы можете управлять фактически всеми объектами, создавать/изменять листы, графики, отдельные файлы и почти все другое. Может быть на 1-ый взор она покажется достаточно сложной, но не пугайтесь на определенных примерах у вас сложится целостная картина.

Структура объектов

Проще всего разглядывать объектную модель как некоторое дерево либо иерархическую структуру, потому что любой объект имеет свое ответвление. Кусок данной нам структуры вы сможете узреть на рисунке дальше.

Самый основной объект, верхушка нашей структуры, это фактически само приложение Excel — объект Application. Какие объекты входят в Excel? верно книжки (файлы Excel), потому в объекте Application содержится коллекция из книжек — объект Workbooks. Из чего же состоят книжки — из листов, диаграмм, соответственно снутри объекта Workbooks мы лицезреем объект Worksheets и Charts. Идем далее, лист в свою очередь состоит из строк, столбцов, ячеек это объекты Rows, Columns, Range.

Это, естественно, как вы осознаете лишь часть объектной модели Excel, мы перечислили лишь одни их самых главных объектов. Полное дерево объектов исчисляется сотками объектов. Может быть она на данный момент кажется сложной, не переживайте с течением времени вы начнете стремительно в ней ориентироваться. Основное на данный момент — это осознать, что есть некоторые объекты, которые могут состоять из остальных объектов.

Объектная модель Excel

Объекты и коллекции объектов

Почти все объекты, которые мы перечислили выше являются коллекциями. Коллекция — это группа однотипных объектов (либо классов). К примеру Workbook s — это коллекция всех открытых в данный момент книжек (объектов Workbook). А коллекция Worksheet s состоит из листов книжки (объектов Worksheet), и так дальше. Обычно все коллекции завершаются буковкой S.

Давайте поглядим, как обращаться к определенным элементам коллекции в коде VBA.

Мы можем указать порядковый номер (начиная с единицы) элемента в коллекции. Worksheets(3) — в этом случае мы обращаемся к 3-му листу книжки.

Мы также можем указать заглавие листа в кавычках Worksheets("Заглавие листа").

Аналогичным образом можно обратиться к определенной книжке Workbook("Заглавием книжки").

Чтоб обратиться к объекту Excel (к листу, либо ячейке) нужно указать ссылку на этот объект, перечислив полный путь к нему в согласовании с объектной моделью.

К примеру, для ячейки A1 полная ссылка будет смотреться последующим образом:

По сути полный путь писать не непременно. Application — можно фактически постоянно не указывать. Workbooks("Заглавие книжки") — можно не указывать, если нужно обратиться к ячейке из активной книжки, а Worksheets("Заглавие листа") можно не писать в случае если код должен делать деяния на активном листе. Т.е. в можно упростить до:

Но постоянно имейте ввиду, что это будет ячейка на активном листе.

Характеристики объектов

Все объекты имеют характеристики и способы. К примеру, объект Range (спектр ячеек) имеет свойство Value, в котором содержится значение.

Вы сможете получать значения из параметров объекта, просто указав путь к подходящему свойству. Последующий код выведет значение ячейки A1 на активном листе.

А последующий код присвоит свойству Value новое значение 12345.

Протестируйте эти функции в собственном файле.

К слову, есть характеристики объектов, которые доступны лишь для чтения. Т.е. вы можете лишь получить значения этих параметров, но не можете присвоить им остальные значения. К примеру, свойство Range("A1").Address которое содержит адресок ячейки. При попытке записать новое значение в такое свойство будет возникать ошибка.
Либо же свойство Worksheets.Count — вы сможете лишь получить количество листов, но не сможете поменять количество листов, задав новое свойство Count. Для этого есть способы объектов.

Способы объектов

В отличие от параметров, которые просто сохраняют либо передают значение, способы делают какие-либо деяния с объектом. К примеру способ Worksheets.Add делает новейший пустой лист в книжке. Очередной пример это способ Clear, который дозволяет очистить содержимое ячеек. Последующий код очистит данные и форматы из спектра ячеек A1:C10.

Есть подобная функция, которая не удаляет при всем этом форматирование ячеек, а лишь очищает их от значений

Способы могут иметь доп аргументы. К примеру, способ AddComment имеет неотклонимый аргумент Text, в котором нужно передать текст комментария к ячейке.

Также можно употреблять последующий код для вызова способов. Может быть это наиболее обычная запись, когда по аналогией с функцией Excel мы в скобках передаем аргументы данной нам функции.

Приемы и лайфхаки

Автоматическое наполнение кода по исходным символам

Нередко, в особенности на первых порах, вы не запомните четкое заглавие всех объектов, но будете держать в голове их 1-ые знаки. В редакторе кода вы сможете употреблять показать перечень заглавий и автоматом записать объект по первым символам. Для этого используйте сочетание кнопок Ctrl+ J и увидите перечень из предложенных вариантов.

Просмотр параметров и способов у объекта

Когда вы будете писать свои программки, то редактор кода VBE будет давать подсказку перечень параметров и способов у объекта. Чтоб показать этот перечень довольно ввести объект, к примеру, Worksheets и поставить точку, отобразится перечень параметров и способов. Изберите подходящий при помощи мышки либо же используйте стрелки. Вы также сможете начать писать заглавие характеристики и редактор кода подберет подходящее. Когда выбор изготовлен — жмите кнопку Tab.

Интересно почитать:  Excel вставить список в ячейку excel

Очевидно указывайте тип переменных

Предшествующий лайфхак не будет работать для сделанных локальных переменных до того времени, пока вы очевидно не укажите их тип. К примеру, если вы захотели сделать переменную MySheet в которой желаете хранить текущий лист. То перечень параметров и способов у таковой переменной вы не увидите. Но стоит добавить строку кода и очевидно указать тип переменной:

И подсказки опять заработают.

Резвый просмотр справки

Все характеристики и способы знать нереально, потому что их тыщи. 1-ое время вы будете интенсивно воспользоваться справкой. Советую употреблять официальную справку на веб-сайте Microsoft.

Чтоб стремительно поглядеть информацию по интересующему вас объекту, свойству либо способу просто поставьте курсор на интересующий элемент кода и нажмите кнопку F1. В окне браузера раскроется официальная справка по этому элементу.

Поиск по объектной модели

Также сначала пути у вас повсевременно будут возникать вопросец "Как именуется свойство, которое отвечает за. ". Время от времени мы и не заем есть ли такое свойство/способ совершенно. Неплохой вариант исследования — просмотр объектной модели. Перебегайте в редактор кода VBA и жмите кнопку F2. Раскроется окно с поиском по объектной модели. Здесь вы отыщите все имеющиеся характеристики, способы, действия и остальные элементы в модели. Просматривайте их, обычно в заглавии элемента заложена его сущность и вы отыщите то что находили. А в процессе поиска будете запоминать и остальные элементы, которые будут попадаться на глаза.

Давайте разберем на примере. Допустим нам нужно защитить лист, но мы не знаем как буквально зазывается свойство либо способ.

Поиск по объектной модели

  1. Открываем объектную модель кнопкой F2.
  2. Потому что мы желаем защитить лист, то разумно представить, что это способ в объекте Worksheet. Введем его в строчку поиска и нажмем бинокль.
  3. В поисковых результатах избираем наш объект Worksheet и просматриваем его элементы.
  4. Находим способ Protect (Защита).
  5. Мы также можем просмотреть описание всех аргументов этого способа
  6. Естественно если что-то не понятно, то нажимаем кнопку F1 и открываем справку по этому способу с подробным описанием всякого аргумента.

На этом данную статью завершим, а в последующих мы наиболее тщательно побеседуем про самый всераспространенный объект Excel — объект Range.

Осознание ячеек Excel и функций спектра в VBA

Excel мощнейший Если вы нередко его используете, вы, возможно, уже понимаете много хитростей, используя формулы либо автоформатирование, но используя ячейки также Диапазон Функции в VBA, вы сможете поднять свою аналитику Excel на совсем новейший уровень.

Неувязка с внедрением функций Cells и Range в VBA состоит в том, что на продвинутых уровнях большинству людей тяжело осознать, как эти функции вправду работают. Внедрение их может весьма запутать. Ах так вы сможете употреблять их так, как вы, возможно, никогда не подразумевали.

Функция клеток

Функции Cells и Range разрешают для вас сказать ваш VBA-скрипт

буквально, где на вашем рабочем листе вы желаете получить, либо расположить данные. Основное различие меж 2-мя ячейками состоит в том, что они ссылаются.

ячейки обычно ссылаются на одну ячейку за раз, в то время как Диапазон ссылается на группу клеток сходу. Формат данной нам функции Клеточки (ряд, столбец).

Это относится к каждой ячейке на всем листе. Это единственный пример, когда функция Cells не ссылается на одну ячейку:

Это относится к третьей ячейке слева в верхнем ряду. Ячейка С1:

Последующий код ссылается на ячейку D15:

Если вы желаете, вы также сможете ссылаться на ячейку D15 при помощи «Ячейки (15,« D »)» — для вас разрешено употреблять буковку столбца.

Существует большая упругость в способности ссылаться на ячейку, используя число для столбца и ячейки, в особенности при помощи сценариев, которые могут Переберите огромное количество ячеек (и делать на их вычисления) весьма стремительно. Подробнее о этом мы побеседуем ниже.

Функция спектра

В почти всех отношениях функция Range намного сильнее, чем внедрение ячеек, так как она дозволяет для вас ссылаться или на одну ячейку, или на определенный спектр ячеек сразу. Вы не собираетесь зацикливаться на функции Range, поэтому что ссылки на ячейки не являются числами (если лишь вы не ввели в их функцию Cells).

Формат данной нам функции Спектр (ячейка № 1, ячейка № 2). Любая ячейка быть может обозначена буквой-номером.

Давайте поглядим на несколько примеров.

Тут функция спектра ссылается на ячейку A5:

Тут функция спектра ссылается на все ячейки меж A1 и E20:

Как уже упоминалось выше, для вас не надо употреблять числовые предназначения. По сути вы сможете употреблять две функции Cells снутри функции Range для определения спектра на листе, к примеру так:

Приведенный выше код ссылается на этот же спектр, что и функция Range («A1: E20»). Ценность его использования заключается в том, что он дозволит для вас писать код, который динамически работает с спектрами, используя циклы

Сейчас, когда вы осознаете, как форматировать функции Cells и Range, давайте разглядим, как вы сможете творчески употреблять эти функции в собственном коде VBA.

Обработка данных с функцией ячеек

Функция Cells более полезна, когда у вас есть непростая формула, которую вы желаете выполнить в нескольких спектрах ячеек. Эти спектры также могут существовать на нескольких листах.

Давайте возьмем обычной пример. Допустим, вы управляете командой продаж из 11 человек, и любой месяц вы желаете поглядеть на их эффективность.

Ты можешь иметь Лист1 который выслеживает их количество продаж и размер продаж.

обработка данных - Excel функции VBA

На Sheet2 это пространство, где вы отслеживаете их отзывы за крайние 30 дней от клиентов вашей компании.

обработка данных - Excel функции VBA

Если вы желаете высчитать приз на первом листе, используя значения из 2-ух листов, есть несколько методов создать это. Вы сможете написать формулу в первой ячейке, которая делает вычисления, используя данные на 2-ух листах, и перетащить ее вниз. Это сработает.

Кандидатурой этому является создание сценария VBA, который вы запускаете при любом открытии листа либо запускаете при помощи командной клавиши на листе, чтоб вы могли надзирать время его расчета. Вы сможете употреблять сценарий VBA для извлечения всех данных о продажах из наружного файла в любом случае.

Так почему бы не запустить вычисления для бонусного столбца в одном и том же сценарии в то время?

Клеточки работают в действии

Если вы никогда ранее не писали VBA в Excel, для вас необходимо включить пункт меню «Разраб». Для этого перейдите в файл > Функции. Нажмите на Настроить ленту. В конце концов, изберите Developer из левой панели, добавлять на правой панели, и удостоверьтесь, что флаг установлен.

Microsoft Excel настроить ленту

Сейчас, когда вы нажимаете Отлично и вернитесь на главный лист, вы увидите пункт меню Разраб.

Вы сможете употреблять Вставить меню, чтоб вставить командную клавишу, либо просто нажмите Поглядеть код начать кодирование.

Microsoft Excel просмотр кода

В этом примере мы будем запускать скрипт при любом открытии книжки. Для этого просто нажмите Поглядеть код из меню разраба и вставьте последующую новейшую функцию в окно кода.

Ваше окно кода будет смотреться приблизительно так.

Excel функции VBA код

Сейчас вы готовы написать код для обработки расчетов. Используя один цикл, вы сможете пройтись по всем 11 сотрудникам, а при помощи функции Cells ввести три переменные, нужные для расчета.

Интересно почитать:  Как сравнить две ячейки в excel на совпадения

Помните, что функция Cells имеет строчку и столбец в качестве характеристик для идентификации каждой отдельной ячейки. Мы создадим «x» в строке, будем употреблять число для запроса данных всякого столбца. Количество строк — это число служащих, потому оно будет от 1 до 11. Идентификатор столбца будет 2 для количества продаж, 3 для размера продаж и 2 из листа 2 для оценки оборотной связи.

В окончательном расчете употребляются последующие проценты для суммирования до 100 процентов от общего приза. Он основан на безупречном количестве продаж 50, объеме продаж 50 000 баксов и оборотной связи 10.

  • (Количество продаж / 50) х 0,4
  • (Размер продаж / 50000) х 0,5
  • (Оценка оборотной связи / 10) х 0,1

Этот обычной подход дает торговцам взвешенный приз. За счет 50, размер 50 000 баксов и 10 баллов они получают весь наибольший приз в месяц. Тем не наименее, все, что находится в безупречном состоянии по хоть какому фактору, уменьшает приз. Все, что лучше безупречного, увеличивает приз.

Сейчас давайте поглядим, как можно воплотить всю эту логику в весьма ординарном и маленьком VBA-скрипте:

Ах так будет смотреться вывод этого скрипта.

Excel функции VBA выход

Если вы желаете, чтоб в столбце «Приз» отображался фактический баксовый приз, а не процент, вы сможете помножить его на наивысшую сумму приза. А еще лучше, расположите эту сумму в ячейку на другом листе и укажите ее в собственном коде. Это упростит изменение значения позднее без необходимости редактировать код.

Красота функции Cells в том, что вы сможете сделать достаточно креативную логику для извлечения данных из много клеток по почти всем разным листам, и сделайте с ними достаточно сложные вычисления.

Вы сможете делать различные деяния с ячейками при помощи функции Cells — к примеру, чистка ячеек, изменение форматирования шрифта и почти все другое.

Чтоб изучить все, что вы сможете создать далее, загляните на страничку Microsoft MSDN для объекта Cells.

Форматирование ячеек с функцией спектра

Функция «Ячейки» совершенно подступает для повторяющегося прохождения огромного количества ячеек по одной за раз. Но если вы желаете применить что-то сходу ко всему спектру ячеек, функция Range будет еще наиболее действенной.

Одним из вариантов использования этого быть может форматирование спектра ячеек с внедрением скрипта, если производятся определенные условия.

форматирование ячеек - функции Excel vba

К примеру, скажем, если общий размер продаж всех служащих отдела продаж превосходит 400 000 долл. США (Соединённые Штаты Америки — государство в Северной Америке), вы желаете выделить все ячейки в столбце приза зеленоватым, чтоб показать, что команда заработала доп командный приз.

Давайте поглядим, как вы сможете создать это при помощи заявления IF

Когда это производится, если ячейка превосходит цель команды, все ячейки в спектре будут заполнены зеленоватым цветом.

Это всего только один обычной пример огромного количества действий, которые вы сможете делать над группами ячеек при помощи функции Range. Остальные вещи, которые вы сможете создать, включают в себя:

  • Применить план вокруг группы
  • Проверьте корректность написания текста снутри спектра ячеек
  • Очистить, скопировать либо вырезать ячейки
  • Поиск по спектру при помощи способа «Отыскать»
  • Намного больше

Непременно прочитайте страничку Microsoft MSDN для объекта Range, чтоб узреть все способности.

Возьмите Excel на последующий уровень

Сейчас, когда вы осознаете различия меж функциями Cells и Range, настало время перевести ваши сценарии VBA на новейший уровень. Статья Данна о использовании функций подсчета и прибавления в Excel дозволит для вас создавать еще наиболее сложные сценарии, которые могут весьма стремительно копить значения во всех ваших наборах данных.

И если вы лишь начинаете работать с VBA в Excel, не забудьте, что у нас есть умопомрачительное вводное управление по Excel VBA

Как снять выделение с диапозоном ячеек в Excel

Когда вы обрабатываете выделенный спектр, то должны быть убеждены, что он подходящего типа по другому не исключено, что макрос будет работать не потому что хотелось.

Перед тем как обрабатывать выделенный спектр ячеек нужно убедиться, а на сомом ли деле это спектр ячеек, а не график либо клавиша. Последующим образом можно предупредить юзера, что выделен совершенно не спектр.

Адресок выделенного спектра

Для определения адреса выделенного спектра ячеек в VBA Excel употребляется свойство Address объекта Selection.

Объект Selection – это совокупа всех выделенных ячеек на листе Excel. Это быть может одна ячейка, смежный либо несмежный спектр ячеек, представляющий совокупа смежных диапазонов. Если выделение состоит из несмежного спектра, адреса смежных диапазонов, из которых он состоит, будут перечислены через запятую.

Необходимо отметить: невзирая на то, что в выделенном спектре может содержаться много ячеек, активной быть может лишь одна. Она представлена объектом ActiveCell. Для определения ее адреса в коде VBA Excel также употребляется свойство Address.

Скопируйте и запустите код на выполнение. В итоге получите что-то вроде этого, зависящее от того, какие спектры вы изберите:


Определение адресов выделенного спектра и активной ячейки

Копирование спектра

Функция записи макросов Excel употребляется не столько для сотворения неплохого кода, сколько для поиска заглавий нужных объектов, способов и параметров. К примеру, при записи операции копирования и вставки можно получить код:

Sub Макрос()
Range( » A1 » ).Select
Selection.Copy
Range( » B1 » ).Select
ActiveSheet.Paste
End Sub

Направьте внимание, что данная программка выделяет ячейки. Но в VBA для работы с объектом не непременно его выделять. Данную функцию можно поменять существенно наиболее обычной — применить способ Сору, который употребляет аргумент, представляющий адресок места вставки копируемого спектра.

Sub CopyRange()
Range( » А1 » ).Copy Range( » В1 » )
End Sub

Предполагается, что рабочий лист является активным и операция производится на активном рабочем листе. Чтоб скопировать спектр на иной рабочий лист либо в другую книжку, нужно задать ссылку:

Sub CopyRange2()
Workbooks( » File1.xlsx » ).Sheets( » Лист1 » ).Range( » A1 » ).Copy _
Workbooks( » File2.xlsx » ).Sheets( » Лист2 » ).Range( » A1 » )
End Sub

Еще одним подходом к решению данной нам задачки является внедрение для представления диапазонов объектных переменных:

Sub CopyRange3()
Dim Rngl As Range, Rng2 As Range
Set Rngl = Workbooks( » File1.xlsx » ).Sheets( » Лист1 » ).Range( » A1 » )
Set Rng2 = Workbooks( » File2.xlsx » ).Sheets( » Лист2 » ).Range( » A1 » )
Rngl.Copy Rng2 End Sub

Можно копировать большенный спектр. Адресок места вставки определяется единственной ячейкой (представляющей верхний левый угол вставляемого спектра):

Sub CopyRange4 ()
Range( » А1:С800 » ).Copy Range( » D1 » )
End Sub

Для перемещения спектра ячеек заместо способа Сору употребляется способ Cut.

Если размер копируемого спектра не известен употребляется свойство CurrentRegion, возвращающее объект Range, который соответствует прямоугольнику ячеек вокруг данной ячейки:

Sub CopyCurrentRegion2()
Range( » A1 » ).CurrentRegion.Copy Sheets( » Лист2 » ).Range( » A1 » )
End Sub

Способ End имеет один аргумент, определяющий направление, в котором возрастает выделение ячеек. Последующий оператор выделяет спектр от активной ячейки до крайней непустой ячейки понизу:

Интересно почитать:  Excel как объединить данные в ячейках

Range (ActiveCell, ActiveCell.End(xlDown)).Select

Три другие константы имитируют композиции кнопок при выделении в остальных направлениях: xlUp (ввысь), xlToLeft (на лево) и xlToRight (на право).

В прилагаемом Excel-файле определено несколько всераспространенных типов выделения ячеек (см. рис. 1). Код любопытен тем, что является также примером сотворения контекстного меню.

Воззвание к определенной ячейке

До этого чем читать либо записывать значение в ячейке, необходимо обусловиться с тем, как можно указать какая конкретно ячейка нам нужна.

Полный путь к ячейке A1 в Книге1 на Листе1 можно записать 2-мя вариациями:

  • При помощи Range
  • При помощи Cells

Пример 1: Обратиться к ячейке A3 находящейся в Книге1 на Листе1

Но, обычно, полный путь изредка употребляется, т.к. макрос работает с Книжкой, в которой он записан и нередко на активном листе. Потому путь к ячейке можно уменьшить и написать просто:

Пример 2: Обратиться к ячейке A1 в текущей книжке на активном листе

Если всё же путь к книжке либо листу нужен, но не охото его писать при любом воззвании к ячейкам, можно употреблять систему With End With. При всем этом, обращаясь к ячейкам, нужно употреблять в начале “.” (точку).

Пример 3: Обратиться к ячейке A1 и B1 в Книге1 на Листе2.

Так же, можно обратиться и к активной (избранной в данный момент времени) ячейке.

Пример 4: Обратиться к активной ячейке на Листе3 текущей книжки.

Запрос значения ячейки

Последующая процедура запрашивает значение у юзера и вставляет его в ячейку А1:

Sub GetValuel()
Range( » A1 » ).Value = InputBox( » Введите значение » )
End Sub

Но при выполнении данной нам процедуры возникает неувязка. Если юзер щелкнет на кнопочке Отмена в окне ввода данных, то процедура удалит данные, которые находились в текущей ячейке. Измененная версия процедуры правильно реагирует на щелчок на кнопочке Отмена и не делает при всем этом никаких действий:

Sub GetValue2()
Dim UserEntry As Variant
UserEntry = InputBox( » Введите значение » )
If UserEntry <> » » Then Range( » A1 » ).Value = UserEntry
End Sub

В почти всех вариантах следует проверить корректность данных, введенных юзером. К примеру, нужно обеспечить введение лишь чисел в спектре от 1 до 12 (рис. 2). Это можно создать с помощью процедуры GetValue3(), код которой приведен в Модуле1 приложенного Excel-файла. Неправильные данные игнорируются, и окно запроса значения отображается опять. Этот цикл будет повторяться, пока юзер не введет правильное значение либо не щелкнет на кнопочке Отмена.

Снять выделение со строк и столбцов

Аналогичным образом работает снятие выделения со строк и столбцов.

Если вы желаете избрать весь лист, а потом снять выделение с неких определенных столбцов, вы сможете создать это последующим образом:

  1. Выделите весь лист, нажав на треугольник в верхней левой части листа (либо используйте сочетание кнопок Ctrl+A)
  2. Удерживая кнопку Ctrl, изберите нужные столбцы, нажимая на соответствую буковку столбца.

Множественное выделение

Функция выше работает лишь с единичным выделением. Но как быть если выделено сходу несколько областей? Верно, необходимо разобраться с каждой по отдельности.

Поначалу определим, на самом ли деле у нас несколько областей. Для этого посчитаем их при помощи последующего кода:

Ну а сейчас организуем цикл, который будет проходить по всем областям. Заодно посчитаем количество ячеек, столбцов, строк. Определим является ли выделение смешанным (к примеру выделен столбец и еще ограниченная область ячеек).

Как вы видите организовать перебрать все выделенные области можно циклом For Each и для всякого спектра вызывать функцию RangeType.

Ввод значения в последующую пустую ячейку

Если требуется ввести значение в последующую пустую ячейку столбца либо строчки, используйте код (рис. 3):

Sub GetData()
Dim NextRow As Long
Dim Entry1 As String, Entry2 As String
Do
‘ Определение последующей пустой строчки
NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
‘ Запрос данных
Entry1 = InputBox( » Введите имя » )
If Entry1 = » » Then Exit Sub
Entry2 = InputBox( » Введите сумму » )
If Entry2 = » » Then Exit Sub
‘ Запись данных
Cells(NextRow, 1) = Entry1
Cells(NextRow, 2) = Entry2
Loop
End Sub

Это нескончаемый цикл. Для выхода из него (щелкните на кнопочке Cancel) использовались операторы Exit Sub. Направьте внимание строчку, в который определяется значение переменной NextRow. Если для вас тяжело ее осознать, проанализируйте содержимое ячейки: перейдите в последнюю ячейку столбца А и нажмите <End> и <↑>. Опосля этого будет выделена крайняя непустая ячейка в столбце А. Свойство Row возвращает номер данной нам строчки; чтоб получить расположенную под ней строчку (последующую пустую строчку), к этому номеру прибавляется 1.

Чтение значения из ячейки

Есть 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.

Определение номеров первой и крайней строчки

Чтоб вычислить номера первой и крайней строчки выделенного спектра, будем исходить из того, что 1-ая ячейка смежного спектра находится на первой строке, а крайняя – на крайней строке выделенного спектра.

Ссылка на основную публикацию
Adblock
detector