This is a tip for referencing macros from other modules without having to remember exactly its name.
This works really well when you segment your modules by category or type or any other logical system where you can look at the module name and know which types of macros are inside of them.
As well, this tip allows you to avoid ambiguous naming issues with your macros if you reuse the same names for multiple macros (procedures).
Additional Resources
Reference Other Macros (msft)
Excel VBA Course — From Beginner to Expert
200+ Video Lessons
50+ Hours of Instruction
200+ Excel Guides
Become a master of VBA and Macros in Excel and learn how to automate all of your tasks in Excel with this online course. (No VBA experience required.)
View Course
Similar Content on TeachExcel
Select Ranges of Cells in Excel using Macros and VBA
Tutorial: This Excel VBA tutorial focuses specifically on selecting ranges of cells in Excel. This…
Get Data from Separate Workbooks in Excel
Tutorial: How to get data from separate workbooks in Excel. This tutorial includes an example using …
Combine Values from Multiple Cells into One Cell in Excel
Tutorial: There are two easy ways to combine values from multiple cells in Excel.
In order to do thi…
Using Formulas with Tables in Excel
Tutorial:
Easy way to reference data tables and make formulas within a data table. This allows you …
Extract the First Word from a Cell in Excel — User Defined Delimiter Text Extraction — UDF
Macro: This free Excel UDF (user defined function) returns the first word from a cell in Exce…
Output the File Path to and Name of a Workbook in Excel — UDF
Macro: Free Excel UDF (user defined function) that displays the full file path and name of an Exc…
Subscribe for Weekly Tutorials
BONUS: subscribe now to download our Top Tutorials Ebook!
Excel VBA Course — From Beginner to Expert
200+ Video Lessons
50+ Hours of Video
200+ Excel Guides
Become a master of VBA and Macros in Excel and learn how to automate all of your tasks in Excel with this online course. (No VBA experience required.)
View Course
HYPNO Пользователь Сообщений: 66 |
#1 22.11.2022 11:10:38 Добрый день!
Вместо ячейки «B10» нужно указать «Лист1, ячейка B10» Изменено: HYPNO — 22.11.2022 11:16:50 |
||
Sheets(«Лист1»).Range(«B10») |
|
HYPNO Пользователь Сообщений: 66 |
Роман Петров, ошибка, выделяет строку желтым цветом |
формат файла сделайте .xlsm |
|
HYPNO Пользователь Сообщений: 66 |
Роман Петров, у меня книга в двоичном формате xlsb, макрос работает, нужно только ссылку привязать к другому листу |
формат .xlsm поддерживает макросы. Как вы хотите сохранить файл с макросом без соответствующего разрешения? Изменено: Роман Петров — 22.11.2022 11:25:01 |
|
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
#7 22.11.2022 11:25:55
1. Какую строку? Изменено: Дмитрий(The_Prist) Щербаков — 22.11.2022 11:27:19 Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
Worksheets(XXX) ссылка на лист ХХХ Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
|
HYPNO Пользователь Сообщений: 66 |
Роман Петров, смотрите: но при замене «& Range(«B10″) &» на «& Sheets(«Лист1»).Range(«B10″) &» — макрос не запускается, выделяя строку желтым. |
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
#10 22.11.2022 11:31:25
угадайте, в чем причина? Может в имени листа, которое записано неверно? Других вариантов нет. Может быть в активной книге «Лист1» записан с пробелом в начале или в конце или еще где-то. Не пробовали взять и скопировать имя из ярлыка листа и вставить в код как есть?
прочтите мое предыдущее сообщение, чтобы было понимание происходящего. Меня xlsx на другой не надо — а вот добавить параметр FileFormat — надо. Изменено: Дмитрий(The_Prist) Щербаков — 22.11.2022 11:34:15 Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||||
HYPNO Пользователь Сообщений: 66 |
#11 22.11.2022 11:33:30 Ігор Гончаренко, вот так?
|
||
HYPNO Пользователь Сообщений: 66 |
Дмитрий(The_Prist) Щербаков, при сохранении в xlsx работает без FileFormat, если менять на xlsm — то нужно указывать FileFormat. Имена листов проверял, даже переименовывал, чтобы исключить ошибку. |
ActiveWorkbook.SaveAs Filename:=» » & » » & Worksheets(«Лист1»).Range(«B10»), FileFormat:=xlOpenXMLWorkbookMacroEnabled Изменено: Роман Петров — 22.11.2022 11:45:01 |
|
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
#14 22.11.2022 11:56:26
да хоть пятый. Дело Ваше. Поверьте, я насохранял кодами файлов куда больше Вашего и знаю, о чем пишу. Вы можете делать как угодно. Изменено: Дмитрий(The_Prist) Щербаков — 22.11.2022 11:57:52 Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
полагаю можно приостановить конкурс на лучшего отгадывателя причины Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
|
HYPNO Пользователь Сообщений: 66 |
Дмитрий(The_Prist) Щербаков, файл примера (работающий без ссылки на Лист1) прикладываю Прикрепленные файлы
|
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
#17 22.11.2022 12:35:37
Вы бы еще написали, какое конкретно значение было в B10. В текущем файле невозможно сохранить, т.к. в тексте есть двоеточие.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||||
HYPNO Пользователь Сообщений: 66 |
Дмитрий(The_Prist) Щербаков, Наименование — любое слово, например «Колесо». |
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
#19 22.11.2022 13:18:55
еще раз
мы так и будем в гадалки играть или уже увидим текст ошибки и все остальное, что я просил? Тут куча вариантов: от неверного пути, до отказа в доступе. Без этого помочь нечем — код отрабатывает на ура, никаких ошибок не выдает. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||||
HYPNO Пользователь Сообщений: 66 |
|
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
#21 22.11.2022 13:41:06 А где же хваленое расширение xlsx на скрине в строке сохранения? Хотя и без него отработает — но лучше добавлять. Далее, для xlsx тип xlOpenXMLWorkbook, а не xlOpenXMLStrictWorkbook.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
New Пользователь Сообщений: 4582 |
у несохранённой книги не может быть Thisworkbook.path, path — пусто. На сколько вижу по Screenshot_6.jpg Изменено: New — 22.11.2022 13:50:31 |
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
#23 22.11.2022 13:55:26
так path назначается ДО метода Copy — а значит путь берется из книги с кодом. А она, как я понял — сохранена где-то. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
HYPNO Пользователь Сообщений: 66 |
Дмитрий(The_Prist) Щербаков, не работает ваша предложенная строка, объясню почему: Если же перейти в «Лист1» и выполнить данный макрос — то он, конечно , выполнится, но во-первых: это мне не нужно ,а в во-вторых, если я уже нахожусь на «Лист1» — зачем мне ссылки делать? я бы оставил «B10» и все. Если вы действительно хотите помочь — прошу, откройте файл примера и запустите макрос с кнопке на листе «НД». Прикрепленные файлы
|
New Пользователь Сообщений: 4582 |
#25 22.11.2022 14:09:00 Наконец-то домучали ТС, чтобы появился файл
Изменено: New — 22.11.2022 14:13:14 |
||
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
#26 22.11.2022 14:14:05
и что? А я на какой лист ссылку поставил?
А то, что Вы ни разу не понимаете как и что работает — это другой вопрос. Я не просто так просил скрин — а что за активная книга у Вас на момент выполнения ошибочной строки? Посмотрели? Нашли в этой книге «Лист1»? И я думаю, что нет. Да и не хотели, т.к. искали причину только в том, что Вам тут советуют не то что-то. А чтобы посоветовать то, что надо — надо понимать от и до что делается и на какой результат рассчитываете. А Вы заладили «Лист1» — это и получили.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||||||
Интересно, Дмитрий после такой ветки подпись придумал? ) Изменено: МатросНаЗебре — 22.11.2022 14:17:46 |
|
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
#28 22.11.2022 14:17:48
не то будет. Я намекал на это изначально не раз. Если запустить код из листа НД, то активный будет лист НД, т.к. копируем именно его. И в этой полученной книге нет других листов — только этот НД и все…А новое имя файла именно в книге с кодом в Лист1.
но это не самый правильный путь. Лучше делать через переменную — надежнее и в отладке куда проще и нагляднее. Изменено: Дмитрий(The_Prist) Щербаков — 22.11.2022 14:18:40 Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||||
HYPNO Пользователь Сообщений: 66 |
New, да файл я еще 2 часа назад прикрепил… |
New Пользователь Сообщений: 4582 |
#30 22.11.2022 14:21:09 Дмитрий(The_Prist) Щербаков, +1, я не прочитал, что написано в ячейке )) |
Добрый день.
в VBA не силен, поэтому обращаюсь к вам.
У меня есть макрос который делает фигуру прозрачной по значению в ячейке.
Мне необходимо чтоб название фигуры и значение находились на другом листе,
ну допустим Лист2 ячейка F10.
Соответственно в макросе должна быть ссылка на конкретный лист и ячейку.
К сожалению сделать самому не получилось подскажите вы пожалуйста.
Пример кода.
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
lr = Cells(Rows.Count, 2).End(xlUp).Row
arr = Range(Cells(10, 1), Cells(lr, 3)).Value
For Each Shape In ActiveSheet.Shapes
For i = 1 To UBound(arr)
If Shape.Name = arr(i, 1) Then
If arr(i, 2) = 1 Then Shape.Fill.Transparency = 1
If arr(i, 2) = 2 Then Shape.Fill.Transparency = 0
End If
Next
Next
End Sub
[/vba]
Содержание
- 1 Параметр «Относительные ссылки»
- 2 Просмотр кода VBA
- 3 Запуск записанного макроса в Excel
- 4 Ограничения
- 5 Как поменять ссылки в формулах на абсолютные?
- 6 Как поменять ссылки в формулах на относительные?
- 6.1 Способ преобразования без использования макросов
- 7 Замечания
По умолчанию, во время записи макроса, все действия по выбору ячеек и диапазонов записываются как абсолютные. Если Вы выбрали ячейку C5 и записали для нее какие-то манипуляции, то последующие воспроизведения макроса будут производить эти действия именно над этой ячейкой. Такое поведение не всегда может соответствовать имеющимся задачам.
Поэтому в приложение Excel предусмотрена специальная возможность записи макросов с относительными ссылками. Если перед запуском макрорекодера было включено данное свойство, то любые ссылки будут записываться как смещенные относительно той ячейки, которая была активна на может этого запуска. Если изначально была выделена ячейка A1, а затем выбрана ячейка C5, то в код макроса попадет такая запись:
ActiveCell.Offset(4, 2).Range("A1").Select
Она указывает приложению на необходимость выделить ячейку, смещенную на 4 строки и 2 столбца от активной на данный момент ячейки. Это значит, если при последующем выполнении макроса предварительно выделить ячейку G10, то смещенной на 4 строки и 2 столбца окажется ячейка I14.
Для активации описанного параметра перейдите на вкладку «Вид», найдите область «Макросы» и в раскрывающемся меню кликните по пункту «Относительные ссылки».
Если материалы office-menu.ru Вам помогли, то поддержите, пожалуйста, проект, чтобы мы могли развивать его дальше.
У Вас недостаточно прав для комментирования.
Простую последовательность действий, которую нужно повторить несколько раз, можно записать в виде программного кода и сохранить как макрос. Если последовательность действий записана в макрос, то выполнять её можно снова и снова, просто запуская этот макрос. Это гораздо эффективнее, чем выполнять раз за разом одни и те же действия вручную.
Чтобы записать макрос, нужно включить режим записи. Это можно сделать на вкладке Вид (View) в разделе Макросы (Macros) или в меню Сервис (Tools), если у Вас Excel 2003. Ниже на картинках показано, как выглядят эти меню.
Далее откроется диалоговое окно Запись макроса (Record Macro), как показано на картинке ниже:
Здесь, по желанию, можно ввести имя и описание для макроса. Рекомендуется давать макросу такое имя, чтобы, вернувшись к нему спустя некоторое время, можно было без труда понять, для чего этот макрос нужен. Так или иначе, если не ввести для макроса имя, то Excel автоматически назовёт его Макрос1, Макрос2 и так далее.
Здесь же можно назначить сочетание клавиш для запуска записанного макроса. Запускать макрос таким способом будет значительно проще. Однако будьте осторожны! Если случайно назначить для макроса одно из предустановленных клавиатурных сочетаний Excel (например, Ctrl+C), то в дальнейшем макрос может быть запущен случайно.
Когда макросу дано подходящее имя и (при желании) задано сочетание клавиш, нажмите ОК, чтобы запустить запись макроса. С этого момента каждое действие (ввод данных, выделение ячеек, изменение формата ячеек, пролистывание листа и так далее) будет записано в макрос и сохранено в виде кода VBA.
При включении режима записи макроса в строке состояния (внизу слева) появляется кнопка Стоп. В Excel 2003 эта кнопка находится на плавающей панели инструментов.
Нажмите Стоп, когда выполните все действия, которые должны быть записаны в макрос. Теперь код записанного макроса сохранён в модуле редактора Visual Basic.
Параметр «Относительные ссылки»
Если перед началом записи макроса включить параметр Относительные ссылки (Use Relative References), то все ссылки в записываемом макросе будут создаваться как относительные. Если же параметр выключен, то при записи макроса будут создаваться абсолютные ссылки (подробнее об этих двух типах ссылок можно узнать в статьях, посвящённых теме ссылок на ячейки в Excel).
Параметр Относительные ссылки (Use Relative References) находится в разделе Макросы (Macros) на вкладке Вид (View). В Excel 2003 этот параметр расположен на плавающей панели инструментов.
Просмотр кода VBA
Код VBA, записанный в макрос, размещается в модуле, который можно просмотреть в редакторе Visual Basic. Редактор можно запустить нажатием Alt+F11 (одновременное нажатие клавиш Alt и F11).
Код находится в одном из модулей, которые расположены в окне Project слева от области редактирования. Если дважды кликнуть по Module1 в окне Project, то справа появится код записанного макроса.
Записывая макрос, Excel всегда создаёт процедуру Sub (не Function). Если при создании макроса к нему было прикреплено сочетание клавиш, то именно с его помощью запустить макрос будет проще всего. Существует и другой способ запустить макрос:
- Нажмите Alt+F8 (одновременно нажмите клавиши Alt и F8);
- В появившемся списке макросов выберите тот, который нужно запустить;
- Нажмите кнопку Выполнить (Run).
Ограничения
Инструмент Excel для записи макросов – это очень простой способ создавать код VBA, но подходит он только для создания самых простых макросов. Дело в том, что этот инструмент не умеет использовать многие возможности VBA, такие как:
- Константы, переменные и массивы;
- Выражения IF;
- Циклы;
- Обращения к встроенным функциям или внешним процедурам.
Как уже было сказано, инструмент записи макросов может создавать только процедуры Sub, так как не может возвращать значение. Процедурам Sub нельзя передавать какие-либо аргументы, хотя они могут распознавать текущие активные ячейки, диапазоны или листы, а также значения, хранящиеся в ячейках книги. Кроме того, нужно сказать, что сгенерированный код не всегда является оптимальным для рассматриваемой последовательности действий.
Автоматическое создание кода VBA в Excel отлично работает для простых макросов, но если нужно построить более сложный макрос, то придётся научиться писать код VBA самостоятельно. Тем не менее, запись макроса в Excel – это отличны инструмент, при помощи которого можно создавать первоначальный код, а в дальнейшем исправлять или вставлять его в более сложные макросы.
Урок подготовлен для Вас командой сайта office-guru.ru
Источник: /> Перевел: Антон Андронов
Правила перепечаткиЕще больше уроков по Microsoft Excel
Оцените качество статьи. Нам важно ваше мнение:
Разберемся как сделать все ссылки абсолютными, относительными или смешанными в диапазоне ячеек в Excel, а не только для одной конкретной ссылки в формуле.
Приветствую всех, дорогие читатели блога TutorExcel.Ru.
Как мы уже хорошо знаем всего в Excel выделяют 3 типа ссылок: относительные (А1), абсолютные ($А$1) и смешанные ($А1 и А$1).
Применение каждого из типов имеет свой смысл и определенные преимущества, поэтому зачастую бывает полезно в формулах заменить все относительные ссылки на абсолютные (или наоборот), к примеру, часто может пригодиться при копировании диапазона ячеек.
Поменять тип для конкретной ссылки в ячейке можно с помощью клавиши F4.
Для этого выделяем ссылку в формуле (либо на ячейку, либо на диапазон ячеек) и поочередно нажимаем F4, в результате ссылки будут меняться в порядке A1 -> $A$1 -> $A1 -> A$1. Затем останавливаемся на нужном шаге и задача смены типа решена.
Однако как это нередко случается в Excel, что удобно сделать 1 раз, не совсем удобно делать десятки, а то и сотни раз.
Так с помощью клавиши F4 мы сможем быстро изменить тип для одной ссылки, но никак не для большого диапазона ячеек с данными.
Поэтому чтобы проделать эту операцию вручную для множества ссылок потребуется другой способ (представьте сколько у вас займет времени поменять ссылки в 100 ячейках), в связи с чем обратимся к помощи макроса, который автоматизирует процесс и существенно ускорит время выполнения работы.
Как поменять ссылки в формулах на абсолютные?
Алгоритм действия макроса построим по следующему принципу: мы заходим в каждую ячейку диапазона, где содержится формула, а далее преобразовываем ссылку в нужный нам вид.
На словах все выглядит просто, давайте перейдем к реализации алгоритма.
Переходим в редактор VBA (для быстрого перехода нажимаем Alt + F11), создаем новый модуль (щелкаем правой кнопкой мыши в панели проектов и выбираем Insert -> Module) и добавляем туда код макроса:
Sub ChangeCellStyleInFormulas() Dim MyCell As Range On Error Resume Next ‘Обработка ошибки, если рассматриваемый диапазон ячеек не содержит формул For Each MyCell In Selection.SpecialCells(xlCellTypeFormulas) ‘Цикл для каждой ячейки диапазона содержащая формулу MyCell.Formula = Application.ConvertFormula(MyCell.Formula, xlA1, xlA1, xlAbsolute) ‘Меняем тип ссылки Next End Sub |
Попробуем проверить работу макроса на простой таблице с формулами:
Выделяем диапазон ячеек с таблицей (в нашем случае это диапазон F6:J10) и запускаем макрос ChangeCellStyleInFormulas (в панели вкладок выбираем Разработчик -> Макросы (или нажимаем Alt + F8), далее находим нужный макрос и жмем Выполнить):
Все получилось, ссылки в таблице из относительных преобразовались в абсолютные.
Теперь рассмотрим другие случаи, когда в конечном результате нужны уже не абсолютные, а относительные или смешанные ссылки.
Как поменять ссылки в формулах на относительные?
За преобразование формулы в макросе отвечает функция ConvertFormula, в которой один из параметров задает тип ссылки:
- xlAbsolute. Абсолютная ($А$1);
- xlRelative. Относительная (А1);
- xlAbsRowRelColumn. Смешанная. Абсолютная строка и относительный столбец (А$1);
- xlRelRowAbsColumn. Смешанная. Относительная строка и абсолютный столбец ($А1).
Поэтому вместо xlAbsolute в коде макроса можно поставить любой из выше перечисленных параметров, в зависимости от того, что конкретно вам нужно.
Например, для той же таблицы применим макрос с параметром xlAbsRowRelColumn (абсолютная строка и относительный столбец, вид A$1):
И для параметра xlRelRowAbsColumn (относительная строка и абсолютный столбец, вид $A1):
Таким образом, меняя значения параметра в макросе можно получить абсолютно любой тип ссылки.
Способ преобразования без использования макросов
Если не хочется возиться с макросами, то преобразовать все ссылки в формулах в относительные также можно и без их применения.
Действительно, так как признаком абсолютной или смешанной ссылки является наличие в формуле знака $ (который используется для закрепления строки или столбца), то с помощью инструмента Найти и заменить можно избавиться от всех знаков $ в формулах.
Выделяем диапазон с данными, нажимаем Ctrl + H, в поле Найти указываем знак доллара, а поле Заменить на оставляем пустым, нажимаем Заменить все и получаем нужный результат:
Замечания
Будьте внимательны при работе с формулами массива, после работы макроса они превращаются в обычные и могут вернуть значение ошибки. Также из-за особенностей VBA макрос может некорректно обрабатывать большие по объему формулы.
Спасибо за внимание!
Если у вас есть мысли или вопросы по теме статьи — пишите в комментариях.
Удачи вам и до скорых встреч на страницах блога TutorExcel.Ru!
Макрокод может быть очень полезным для нас при решении некоторых сложных задач в Excel, обычно мы можем выполнить его в Microsoft Visual Basic для приложений окно, нажав Run или нажатие F5 ключ. Но пробовали ли вы когда-нибудь запускать макросы, щелкая относительные гиперссылки на листе?
Запустите или выполните макрос, щелкнув гиперссылку с кодом VBA
Запустите или выполните макрос, щелкнув гиперссылку с кодом VBA
Нам может быть интересно запустить макрос, щелкнув гиперссылку в Excel, следующий метод может помочь вам выполнить эту задачу шаг за шагом:
1. Создайте гиперссылки, которые вы хотите использовать для выполнения кодов макросов. Щелкните ячейку и создайте гиперссылку для ссылки на себя, см. Снимок экрана:
2. Повторите вышеуказанный шаг, чтобы создать другие гиперссылки, которые вы хотите использовать, как показано на следующем снимке экрана:
3. Затем щелкните правой кнопкой мыши вкладку листа, содержащую гиперссылки, которые вы хотите использовать, и выберите Просмотреть код из контекстного меню, а в открывшемся Microsoft Visual Basic для приложений окна, скопируйте и вставьте следующий код в пустой модуль:
Код VBA: запускать коды макросов из гиперссылок:
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
If Target.Range.Address = "$B$6" Then
Call Macro1
End If
If Target.Range.Address = "$B$8" Then
Call Macro2
End If
End Sub
Внимание: В приведенном выше коде B6 и B8 содержат ли ячейки гиперссылки, которые вы хотите использовать, и Macro1 и Macro2 являются кодовыми названиями макросов, измените их по своему усмотрению.
4. Затем сохраните и закройте окно кода, с этого момента, когда вы щелкаете гиперссылку, конкретный код макроса будет выполняться сразу.
Статьи по теме:
Как запустить макрос при изменении значения ячейки в Excel?
Как запустить макрос на основе значения ячейки в Excel?
Как запустить макрос на основе значения, выбранного из раскрывающегося списка в Excel?
Как запустить макрос автоматически перед печатью в Excel?
Как запустить макрос, когда лист выбран из книги?
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Комментарии (5)
Оценок пока нет. Оцените первым!
Хитрости »
31 Январь 2013 17466 просмотров
Как сделать гиперссылку на процедуру?
В своих статьях я часто прикладываю примеры с кодами. Т.к. мой сайт ориентирован как на знающих программирование в Visual Basic for Application(VBA), так и на начинающих, я в примерах почти всегда на первом листе делаю кнопку, по нажатию которой можно сразу же перейти в редактор VBA на нужный код без каких-либо лишних телодвижений. Как-то меня уже просили разъяснить каким способом я это делаю. Вот сегодня на одном из форумов попросили в очередной раз, что и побудило меня сесть и написать эту статью. Итак, к сути.
На самом деле это не так уж и сложно. Для начала необходимо создать хоть какой-то код(макрос) внутри книги(предполагается, что это вы умеете уже. Если нет — статья в помощь). Предположим, что наш макрос расположен в модуле Module1 и называется он Макрос1. Теперь создадим кнопку для вызова этого макроса, если необходимо. А после этого создадим еще одну кнопку(я использую для этих целей автофигуры), по нажатию на которую мы и будем попадать сразу в тело нужного нам макроса.
Способ 1:
Жмем на созданной фигуре правой кнопкой мыши. Выбираем в появившемся меню Гиперссылка:
Выбираем «Файлом, веб-страницей»(этот пункт открывается по умолчанию) и вписываем в поле Адрес:: #Module1.Макрос1
Вот и все. Наша ссылка готова.
Решетка(#) перед именем модуля указывает, что ссылка ведет на путь внутри документа. Она обязательна. После имени модуля(Module1) ставится точка, после которой указывается имя процедуры(Макрос1) или функции, на которую должна перейти гиперссылка. Никаких пробелов или иных символов быть не должно.
С прочими возможностями гиперссылок и методах из создания можно ознакомиться в статье: Что такое гиперссылка?
Способ 2:
Этот способ кажется мне более «замороченным» и не эстетичным. Я его практически не использую. Создаем еще одну процедуру(можно в отдельном модуле), в которой и прописываем переход в нужный модуль и в нужную процедуру:
Sub GoTo_Sub() Application.Goto "Module1.Макрос1" End Sub
А созданной кнопке назначаем выполнение именно этого макроса — GoTo_Sub. Главный недостаток этого метода в том, что придется для каждой процедуры либо создавать новую процедуру с переходом, либо действовать через всевозможные конструкции типа If...Then, Select Case
, что не очень удобно. Но данный метод может быть использован и в других целях. Например, для перехода в конкретную процедуру при возникновении ошибки в другой процедуре.
Также см.:
Что такое гиперссылка?
Что такое макрос и где его искать?
Что такое модуль? Какие бывают модули?
Как создать кнопку для вызова макроса на листе?
Статья помогла? Поделись ссылкой с друзьями!
Видеоуроки
Поиск по меткам
Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика
Кнопка в Excel как ссылка на ячейку, какой-либо инструмент, созданный макрос значительно упрощает работу в программе. Чаще всего это графический объект с назначенным макросом или гиперссылкой. Рассмотрим, как сделать такую кнопку.
Как сделать кнопку на листе Excel
Суть работы: создать графический объект и назначить для него макрос или гиперссылку. Рассмотрим подробнее.
Способы создания графического объекта:
- Кнопка – элемент ActiveX. Переходим на вкладку «Разработчик». Нажимаем кнопку «Вставить». Открывается меню с набором элементов для вставки. Выбираем первый элемент ActiveX – «кнопку» (в виде серого кирпичика). Теперь рисуем курсором кнопку необходимого размера.
- Кнопка – элемент управления формы. Снова переходим на вкладку «Разработчик». Открываем меню инструмента «Вставить». Теперь выбираем элемент «кнопка» из первой группы (такой же серый кирпичик). Рисуем кнопку. Сразу открывается окно для назначения макроса: можно сделать сразу, а можно попозже.
- Кнопка – автофигура. Переходим на вкладку «Вставка». В меню «Иллюстрации» выбираем подходящую фигуру. Рисуем. По готовой фигуре можно щелкнуть правой кнопкой мыши и изменить оформление.
- Кнопка – рисунок. Переходим на вкладку «Вставка». В меню «Иллюстрации» выбираем инструмент «Рисунок». Для выбора будут предложены варианты, которые имеются на компьютере.
Графический объект создан. Теперь нужно сделать его «рабочим».
Как в Excel сделать кнопку с макросом
К примеру, написали макрос для выполнения определенной задачи. Чтобы запускать его, нужно каждый раз заходить в меню «Разработчик». Что неудобно. Гораздо проще создать «рабочую» кнопку.
Если мы использовали элемент ActiveX, то:
Для других графических объектов макрос назначается так же. Процедура еще проще. Нужно щелкнуть правой кнопкой мыши по нарисованной кнопке или картинке и выбрать инструмент «Назначить макрос».
Другие варианты использования кнопок
С помощью кнопок в Excel можно не только выполнять созданные макросы, но и переходить в определенную ячейку, другой документ, на другой лист. Рассмотрим подробнее.
Нарисуем графический объект и выделим его. На вкладке «Вставка» найдем кнопку «Гиперссылка».
После нажатия открывается окно для создания связи кнопки с файлом, веб-страницей, электронной почтой, новым документом, местом в текущем документе.
Достаточно выбрать необходимый вариант и прописать к нему путь. Этот способ не требует написания макросов и предоставляет пользователю широкие возможности.
Подобные задачи можно выполнять и с помощью макросов. Например, чтобы при нажатии, пользователь попадал в определенную ячейку (М6), прописываем следующий код:
Sub Макрос 1()
Range(«M6»).Select
End Sub
Точно так же можно назначить макрос диаграмме, объектам WordArt, SmartAtr.
Как сделать кнопку сортировки в Excel для таблиц
Для показательного примера создайте тестовую таблицу как на рисунке:
- Вместо заголовков колонки таблицы добавим автофигуры, которые будут служить кнопками для сортировки по столбцам таблицы.
- В режиме Visual Basic — ALT+F11 в папке Modules вставляем новый модуль Module1. Для этого делаем по папке правый щелчок мышкой и выбираем: Insert-Module.
- Делаем двойной щелчок по Module1 и вводим в него следующий код:
- Назначаем каждой автофигуре свой макрос: для «Наименование» – Макрос1, а для «Май» – Макрос2 и т.д.
Sub Макрос1()
ActiveWorkbook.Worksheets(«Лист1»).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(«Лист1»).Sort.SortFields.Add Key:=Range(«A2:A6«), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(«Лист1»).Sort
.SetRange Range(«A2:D6»)
.Apply
End With
End Sub
‘————————————————
Sub Макрос2()
ActiveWorkbook.Worksheets(«Лист1»).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(«Лист1»).Sort.SortFields.Add Key:=Range(«B2:B6«), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(«Лист1»).Sort
.SetRange Range(«A2:D6»)
.Apply
End With
End Sub
‘————————————————
Sub Макрос3(
)
ActiveWorkbook.Worksheets(«Лист1»).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(«Лист1»).Sort.SortFields.Add Key:=Range(«C2:C6«), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(«Лист1»).Sort
.SetRange Range(«A2:D6»)
.Apply
End With
End Sub
‘————————————————
Sub Макрос4()
ActiveWorkbook.Worksheets(«Лист1»).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(«Лист1»).Sort.SortFields.Add Key:=Range(«D2:D6«), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(«Лист1»).Sort
.SetRange Range(«A2:D6»)
.Apply
End With
End Sub
Примечание. Красным текстом отмечены отличающиеся параметры для каждого столбца.
Все теперь достаточно только кликнуть по заголовку и таблица отсортирует данные относительно определенного столбца. Для удобства столбец «Наименование» Макрос1 сортирует по возрастанию благодаря параметру Order:=xlAscending. Во всех остальных столбцах присвоены макросы (2,3,4) с параметром Order:=xlDescending, который задает тип сортировки по убыванию. Чтобы видно было, в каком месяце было больше продано товара.
Скачать пример кнопки сортировки
Примечание. Такие простые макросы можно создать в автоматическом режиме без программирования или без написания VBA-кода, с помощью инструмента «Запись макроса».
36 / 33 / 1 Регистрация: 11.01.2013 Сообщений: 388 |
|
1 |
|
Ссылка на макрос15.04.2014, 18:31. Показов 2364. Ответов 7
Доброго времени суток! С уважением, SysUnit.
0 |
toiai 3217 / 966 / 223 Регистрация: 29.05.2010 Сообщений: 2,085 |
||||
15.04.2014, 18:42 |
2 |
|||
Если файл-надстройка открыт, то кнопке можно назначить макрос таким образом:
1 |
Sasha_Smirnov 5561 / 1367 / 150 Регистрация: 08.02.2009 Сообщений: 4,107 Записей в блоге: 30 |
||||
15.04.2014, 18:49 |
3 |
|||
Регулярно используемый код можно назвать
и поместить в модуль Эта книга. Хотя уже не надо:
Если файл-надстройка открыт…
Для корректной работы замените расширение на xlam. А *.xls не могли бы пристегнуть? — а то я так не вижу.
1 |
36 / 33 / 1 Регистрация: 11.01.2013 Сообщений: 388 |
|
15.04.2014, 21:24 [ТС] |
4 |
toiai,
Если файл-надстройка открыт одновременно его нужно самому открывать? Sasha_Smirnov, С уважением.
0 |
1588 / 661 / 225 Регистрация: 09.06.2011 Сообщений: 1,334 |
|
15.04.2014, 22:42 |
5 |
Сообщение было отмечено SysUnit как решение Решение Только для 2007+ через XML разметку (см.вложение — вкладка «копирование») В 2013 офисе, к сожалению, нет возможности экспорта в .xla неправда: Миниатюры
1 |
36 / 33 / 1 Регистрация: 11.01.2013 Сообщений: 388 |
|
15.04.2014, 22:51 [ТС] |
6 |
Sasha_Smirnov,
0 |
36 / 33 / 1 Регистрация: 11.01.2013 Сообщений: 388 |
|
15.04.2014, 22:58 [ТС] |
7 |
Step_UA, С уважением.
0 |
1588 / 661 / 225 Регистрация: 09.06.2011 Сообщений: 1,334 |
|
15.04.2014, 23:27 |
8 |
Сообщение было отмечено SysUnit как решение Решение Правка ленты:
1 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
15.04.2014, 23:27 |
8 |