Сделать фрейм в excel

Обновлено: 17.05.2024

С помощью OLE можно включать контент из других программ, таких как Word или Excel.

OLE поддерживается многими различными программами, а OLE используется для того, чтобы содержимое, созданное в одной программе, было доступно в другой программе. Например, можно вставить документ Office Word в книгу Office Excel. Чтобы узнать, какие типы содержимого можно вставить, на вкладке Вставка в группе Текст нажмитекнопку Объект. В поле Тип объекта отображаются только программы, которые установлены на компьютере и поддерживают объекты OLE.

При копировании данных между Excel или любой программой, которая поддерживает OLE, например Word, вы можете скопировать их как связанный объект или внедренный объект. Основные различия между связанными и внедренными объектами заключается в том, где хранятся данные и как обновляется объект после его конечный файл. Внедренные объекты хранятся в книге, в которую они вставляются, и не обновляются. Связанные объекты остаются отдельными файлами, и их можно обновлять.

Связанные и внедренные объекты в документе

1. Внедренный объект не имеет подключения к исходным файлам.

2. Связанный объект связан с исходным файлом.

3. Исходный файл обновляет связанный объект.

Когда использовать связанные объекты

Если вы хотите, чтобы данные в конечный файл обновлялись при исходный файл изменения, используйте связанные объекты.

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

Связанные данные могут обновляться автоматически при изменении исходных данных в исходном файле. Например, если вы вы выбрали абзац в документе Word, а затем вклеили его как связанный объект в книгу Excel, то при изменении сведений в документе Word сведения могут обновляться в Excel.

Когда использовать внедренные объекты

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

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

Изменение способа отображения объекта OLE

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

Создайте или откройте файл Excel с расширением .xlsm (Книга Excel с поддержкой макросов) или с расширением .xls в старых версиях приложения.

Перейдите в редактор VBA, нажав сочетание клавиш «Левая_клавиша_Alt+F11».

В открывшемся окне редактора VBA выберите вкладку «Insert» главного меню и нажмите кнопку «UserForm». То же подменю откроется при нажатии на вторую кнопку (после значка Excel) на панели инструментов.


На экране редактора VBA появится новая пользовательская форма с именем «UserForm1»:


Добавление элементов управления

Обычно вместе с пользовательской формой открывается панель инструментов «Toolbox», как на изображении выше, с набором элементов управления формы. Если панель инструментов «Toolbox» не отобразилась, ее можно вызвать, нажав кнопку «Toolbox» во вкладке «View»:


При наведении курсора на элементы управления появляются подсказки.

Найдите на панели инструментов «Toolbox» элемент управления с подсказкой «TextBox», кликните по нему и, затем, кликните в любом месте рабочего поля формы. Элемент управления «TextBox» (текстовое поле) будет добавлен на форму.

Найдите на панели инструментов «Toolbox» элемент управления с подсказкой «CommandButton», кликните по нему и, затем, кликните в любом месте рабочего поля формы. Элемент управления «CommandButton» (кнопка) будет добавлен на форму.

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


Нажатием клавиши «F4» вызывается окно свойств, с помощью которого можно вручную задавать значения свойств пользовательской формы и элементов управления. В окне свойств отображаются свойства выбранного элемента управления или формы, если выбрана она. Также окно свойств можно вызвать, нажав кнопку «Properties Window» во вкладке «View».

Отображение формы на экране

Чтобы запустить пользовательскую форму для просмотра из редактора VBA, необходимо выбрать ее, кликнув по заголовку или свободному от элементов управления полю, и совершить одно из трех действий:

  • нажать клавишу «F5»;
  • нажать на треугольник на панели инструментов (на изображении выше треугольник находится под вкладкой «Debug»);
  • нажать кнопку «Run Sub/UserForm» во вкладке «Run».

Для запуска пользовательской формы с рабочего листа Excel, можно использовать кнопки, описанные в этой статье. Например, чтобы отобразить форму с помощью «кнопки – элемента ActiveX», используйте в модуле рабочего листа следующий код:

32 комментария для “VBA Excel. Содержание рубрики”

Здравствуйте! У Вас нет темы по работе с фильтром. Можно проконсультироваться на этот счёт?

Здравствуйте, Сергей!
Задавайте вопрос, постараюсь ответить.

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

Да, это возможно:

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

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

Пример отслеживания нажатий кнопки «OK» автофильтра. На нажатие кнопки «Отмена» код не реагирует.

myString = Range ( "A1" ) . CurrentRegion . SpecialCells ( xlCellTypeVisible ) . Address myString1 = Range ( "A1" ) . CurrentRegion . SpecialCells ( xlCellTypeVisible ) . Address If Not Intersect ( ActiveCell , Range ( "A1" ) ) Is Nothing Then

Range("A1").CurrentRegion можно заменить на имя таблицы.

Евгений, а формулу в поле B2 оставлять или её можно удалить?

Сергей, событие Worksheet_Calculate() не зависит от команды SendKeys "%" . Ограничение стоит здесь:

If Not Intersect ( ActiveCell , Range ( "A1" ) ) Is Nothing Then

Код в процедуре Worksheet_Calculate() срабатывает только когда активна ячейка Range("A1") . Если заменить в этой строке Range("A1") на диапазон строки заголовков таблицы, тогда код будет срабатывать при любой активной ячейке в заголовке.

В столбце «B» не должно быть пустых ячеек до последней строки таблицы.

Как определить в VBA есть узор в ячейке?

If ActiveCell . Interior . Pattern = xlPatternNone Then

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

Set ws = ThisWorkbook . Sheets ( 1 ) 'можно указать любой лист книги 'устанавливаем защиту на все ячейки рабочего диапазона листа 'снимаем защиту только с пустых ячеек рабочего диапазона листа Set rr = ws . UsedRange . SpecialCells ( xlCellTypeBlanks ) Private Sub Workbook_BeforeClose ( Cancel As Boolean )

Добрый день, Владислав!
Замените строку

Добрый день, Евгений!
ОГРОМНОЕ СПАСИБО. :))

Здравствуйте, помогите, пожалуйста, решить задачу((

Здравствуйте, Рафия!
С разработкой кредитного калькулятора вам помогут только за плату на бирже фриланса.

Добрый день, Евгений! Я только начинаю работать с VBA. Помогите, пожалуйста, прописать код для автоматического перемещения курсора на ячейку вправо после заполнения предыдущей.

Здравствуйте, Ева! Для перемещения фокуса в ячейку справа код VBA не нужен: используйте для этого клавишу «Tab» или настройте клавишу «Enter» для перехода вправо (Файл >> Параметры >> Дополнительно).

Спасибо за ответ! Да, но это надо делать вручную; речь идёт об автоматическом перемещении курсора.

В данной статье мы подведем небольшой итог по элементам управления языка VBA, а именно, рассмотрим компонент VBA Frame, который позволяет добавлять на поверхность формы рамку. Сам объект довольно простой, хотя у него и есть масса свойств и событий, в большинстве случаев они обрабатываться не будут.

vba frame

Добавление объектов класса Frame полезно в том случае, если нужно создать группу заданных объектов (например, флажков или переключателей) или просто, сделать визуальное оформление. Помним, что для запуска редактора VBA служит комбинация клавиш Alt + F11, все элементы управления находятся в окне ToolBox, оно автоматически доступно при роботе с объектом UserForm. Если окно ToolBox отсутствует, то его можно вызвать из меню View.

Единственные свойство класса Frame, которое мы будем использовать:

BorderStyle – отвечает за отображение рамки, 0 – рамка не будет отображаться (будет видна простая вмятина), 1 – будет отображаться рамка цвета, заданного в свойстве BorderColor .

Caption – задает надпись, которая отображается вверху по контуру рамки, свойство носит чисто информативный характер.

Хорошо, давайте приступим к настройке самой формы с компонентами. На поверхности UserForm мы разместим два блока, один – набор переключателей OptionButton, а второй – набор флажков CheckBox. Рядом будет находиться текстовое поле TextBox и список ListBox и одна кнопка. Когда мы будет выбирать значения в блоке с переключателями, в текстовом поле будет отображаться информация о выбранном элементе. При нажатии на кнопку, будет происходить добавление в список тех значений, которые отмечены галочками во втором блоке.

В редакторе кода для формы нужно разместить следующий код:

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

Форма UserForm с компонентом VBA Frame

Процедуры от OptionButton1_Change до OptionButton4_Change отвечают за обработку события Change для каждого объекта OptionButton, расположенного на поверхности Frame. Переменная Data содержит данные типа String, в ней хранится информация, которую нужно вывести в текстовом поле.

CommandButton1_Click – тут происходит обработка клика по кнопке, в цикле происходит перебор коллекции всех элементов, что лежат на второй рамке класса Frame vba языка. Если значение Value какого из элементов ровно true (поставлена галочка), то содержимое Caption для выбранного объекта будет добавляться в список ListBox.

UserForm_Initialize – тут происходит настройки базовых свойств: определяем для текстового поля то, что оно будет многострочным (свойству MultiLine присваиваем значение true). Для объекта Frame3 класса vba Frame мы определяем, что бы отображалась рамка (свойству BorderStyle присваиваем значение fmBorderStyleSingle).

И так, в этой статье мы рассмотрели элемент управления Frame VBA языка, который позволяет добавлять рамку на поверхность формы.

Спасибо за внимание. Автор блога Владимир Баталий

Читайте также: