Excel макрос с одной страницы на другую

Gala_k

1

02.06.2011, 16:29. Показов 56905. Ответов 5


Студворк — интернет-сервис помощи студентам

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

1 / 1 / 1

Регистрация: 10.04.2011

Сообщений: 415

02.06.2011, 17:06

2

1. Используй запись макросов, ё-моё! — эксель тебе сам все распишет, и как копировать, и как лист поменять…



0



Gala_k

02.06.2011, 17:17

3

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

Сумрак

03.06.2011, 04:38

4

Visual Basic
1
2
3
4
Set WS1 = ActiveSheet ' активный лист
Set WS2 = ActiveWorkbook.Sheets("Лист1") ' - нужный лист
WS2.Cells(1,1).value=WS2.Cells(1,1).value
WS2.Activate ' - нужный стал активным

0 / 0 / 0

Регистрация: 11.11.2019

Сообщений: 3

24.02.2020, 18:31

5

Sheets(«нужный лист»).Select



0



Hugo121

6875 / 2807 / 533

Регистрация: 19.10.2012

Сообщений: 8,562

24.02.2020, 18:43

6

Чтобы взять/скопировать данные — не нужно «менять» лист, просто нужно в коде указать с какого листа данные берёте и на какой копируете, примерно как выше в коде:

Visual Basic
1
WS1.Cells(1,1).value=WS2.Cells(1,1).value

А вообще — каким макаром ожила эта тема?



0



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

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

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

Итак, просто внимательно просмотрите этот блог.

Содержание

  1. Практический сценарий
  2. Методы передачи данных из одной книги Excel в другую
  3. Метод № 1: автоматически Обновление одного листа Excel с другого листа
  4. Метод № 2: обновить электронную таблицу Excel данными из другой электронной таблицы
  5. Метод № 3: Как автоматически скопировать данные из одной ячейки в другую в Excel
  6. Метод № 4: Как скопировать данные с одного листа на другой в Excel с помощью формулы
  7. Метод № 5: копирование данных с одного листа на другой в Excel с помощью макросов
  8. Рекомендуемое решение: средство восстановления и восстановления MS Excel
  9. Шаги по использованию средства восстановления и восстановления MS Excel:
  10. Заключение:
  11. Маргрет
  12. MicroKnowledge, Inc.
  13. Приведенные ниже шаги объясняют, как настроить это с помощью Excel 2007 или более поздней версии.

Практический сценарий

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

У меня есть рабочая тетрадь с 6 листами внутри; один из листов – мастер; это просто остальные 6 листов, составленные в один большой. Мне нужно настроить его так, чтобы любые новые данные, введенные в новые отдельные листы, автоматически вводились в мастер-лист в первой пустой строке.

Столбцы не одинаковы на всех листах. . Надеюсь, здесь профи будет легче, чем мне, в этом я бился головой о стену. Я буду тщательно проверять эту ветку, поэтому, если вам понадобится дополнительная информация, просто дайте мне знать …

Заранее благодарим за любую помощь.

Источник: https://ccm.net/forum/affich-1019001-automatically-update-master-worksheet-from- другие рабочие листы

Методы передачи данных из одной книги Excel в другую

Существует множество различных способов переноса данных из одной книги Excel в другую , и они следующие:

Метод № 1: автоматически Обновление одного листа Excel с другого листа

В книге MS Excel мы можем легко обновить данные, связав один лист с другим. Эта ссылка известна как динамическая формула, которая автоматически передает данные из одной книги Excel в другую .

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

Ниже приведены две разные точки для связывания Excel. данные книги для автоматических обновлений.

1) С использованием функции копирования и вставки

  • В исходный лист, выберите и скопируйте данные, которые вы хотите связать на другом листе.
  • Теперь на целевом листе Вставьте данные, к которым вы связали исходный лист ячейки.
  • После этого выберите меню Вставить ссылку из Другие параметры вставки в книге Excel

  • Сохраните всю свою работу из исходного рабочего листа перед его закрытием.

2) Введите формулу вручную

  • Откройте целевой рабочий лист, коснитесь ячейки, в которой есть формула связи, и поместите знак равенства (=) поперек нее.
  • Теперь перейдите к источник ш eet и коснитесь ячейки, в которой есть данные. нажмите Enter на клавиатуре и сохраните свои задачи.

Примечание- Всегда помните одну вещь, что формат исходного рабочего листа и конечный рабочий лист одинаковы.

Метод № 2: обновить электронную таблицу Excel данными из другой электронной таблицы

Чтобы обновить электронные таблицы Excel данными из другой электронной таблицы, просто следуйте приведенным ниже пунктам, которые будут применимы к версии Excel 2019, 2016, 2013, 2010, 2007.

  • Сначала перейдите в меню Данные .
  • Выберите параметр Обновить все

  • Здесь вы должны увидеть, когда и как обновляется соединение
  • Теперь щелкните любую ячейку, содержащую подключенные данные.
  • Снова в меню Данные , cli ck на стрелке рядом с параметром Обновить все и выберите Свойства соединения

  • После этого в меню Использование установите параметры которые вы хотите изменить.
  • На вкладке Использование установите любые параметры, которые вы хотите изменить.

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

Метод № 3: Как автоматически скопировать данные из одной ячейки в другую в Excel

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

  • Сначала откройте исходный рабочий лист и целевой рабочий лист.
  • На исходном листе перейдите к листу, который вы хотите переместить или скопировать.
  • Теперь нажмите меню Главная и выберите параметр Формат .
  • Затем выберите «Переместить или скопировать лист» в разделе «Организовать листы».
  • После этого снова в в меню Главная выберите параметр Формат в группе ячеек.
  • Здесь в Переместить или скопировать выберите целевой лист, и Excel отобразит только открытые листы в списке.

  • Иначе, если вы хотите скопировать рабочий лист вместо перемещения, сделайте копию книги Excel перед

  • Наконец, нажмите ОК кнопку, чтобы скопировать или переместить целевую электронную таблицу Excel.

Метод № 4: Как скопировать данные с одного листа на другой в Excel с помощью формулы

Вы можете копировать данные с одного листа на другой в Excel с помощью формулы . Вот шаги, которые необходимо выполнить:

  • Для копирования и вставки ячейки Excel в текущий рабочий лист Excel, , например; скопируйте ячейку От A1 до D5, вы можете просто выбрать целевую ячейку D5, затем ввести = A1 и нажать клавишу Enter, чтобы получить значение A1.
  • Для копирования и вставки ячеек с одного рабочего листа на другой, например скопируйте ячейку A1 листа Sheet1 в ячейку D5 листа Sheet2, выберите ячейку D5 на листе Sheet2, затем введите = Sheet1! A1 и нажмите клавишу Enter, чтобы получить значение.

Метод № 5: копирование данных с одного листа на другой в Excel с помощью макросов

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

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

Sub OpenWorkbook ()
‘Открыть книгу
‘Метод открытия требует ссылки на полный путь к файлу.
Workbooks.Open «C: Users username Documents New Data.xlsx»

‘ Метод открытия имеет дополнительные параметры
‘Workbooks.Open (FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad)

End Sub

Sub CloseWorkbook ()
‘Закройте книгу
Workbooks («New Data.xlsx»). Close SaveChanges: = True
‘Метод Close имеет дополнительные параметры
‘ Workbooks.Close (SaveChanges, Filename, RouteWorkbook)

End Sub

Рекомендуемое решение: средство восстановления и восстановления MS Excel

Когда вы выполняете свою работу в MS Excel и по ошибке или случайно делаете это не сохранять данные книги, иначе ваш рабочий лист будет удален, тогда у нас есть для вас профессиональный инструмент восстановления, например MS Excel Repair & Recovery Tool .

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

Шаги по использованию средства восстановления и восстановления MS Excel:

Заключение:

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

Я надеюсь, что вы удовлетворены приведенными выше методами, предоставленными вам по обновлению листа Excel .

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

Маргрет

Маргрет Артур – предприниматель и эксперт по контент-маркетингу. Она ведет технические блоги и специализируется на MS Office, Excel и других технических вопросах. Ее отличительное искусство подачи технической информации простым для понимания языком очень впечатляет. Когда не пишет, она любит незапланированные путешествия.



MicroKnowledge, Inc.

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

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

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

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

Звучит сложно? Это не так!

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

(Эта функция также доступна в предыдущих версиях Excel. )

  1. Создайте все нужные листы в книге. Здесь я создал лист для каждого представителя службы поддержки.
  2. Создайте именованный диапазон для своей главной таблицы. Выделите данные в своей таблице (включая заголовки), введите e введите имя диапазона в поле имени слева от строки формул, затем нажмите Enter. Именованный диапазон необходим Microsoft Query для выбора данных для анализа.
  3. Создайте таблицу из вашей главной таблицы. Выделите свои данные, как описано выше. Откройте вкладку Вставить . Щелкните Таблица . Этот шаг немного избыточен, но преобразование ваших данных в таблицу имеет массу преимуществ, главное из которых состоит в том, что при добавлении в нее новых данных она автоматически расширяется для сбора новых данных. В свою очередь, это также автоматически расширит ваш именованный диапазон.
  4. Перейдите на лист, на который вы хотите поместить результаты запроса. Это может быть другой рабочий лист или даже другая книга.
  5. Щелкните вкладку Данные . Нажмите Из других источников . Выберите Из Microsoft Query . Откроется окно Выбрать источник данных .
  6. Выберите файлы Excel. Нажмите ОК . Откроется окно Выбрать книгу .
  7. Найдите и выберите книгу для запроса. Обратите внимание, что это может быть та же книга, что и открытая в данный момент. Нажмите ОК . Отображается Мастер запросов .
  8. Должны появиться ваши именованные диапазоны в левой части окна в виде таблицы. Я выберу все столбцы слева, чтобы показать их на листах подмножества. Щелкните Далее .
  9. На шаге мастера «Фильтровать данные» выберите фильтрацию данных, которые вы хотите отобразить на этом листе. Здесь я делаю лист Джерри, поэтому мне нужны только данные, где Назначено равно Джерри. Нажмите Далее .
  10. Выполните оставшиеся шаги в мастера, пока вы не будете готовы выбрать место назначения для ваших данных. В диалоговом окне Импорт данных убедитесь, что Таблица выбрана в качестве способа вставки ваших данных.. Я решил вставить данные в A1 на листе Джерри.
  11. Поскольку вы вставили данные в качестве таблицы у вас есть особая возможность Обновить, если вы вносите какие-либо изменения в основную таблицу. Вы можете найти Обновить на вкладке «Данные» или на вкладке «Работа с таблицами» Дизайн .

Вам понадобится повторить шаги 4–11 для каждого имеющегося у вас подмножества листов. Но как только все это настроено, у вас есть небольшая симпатичная база данных Excel!

Решение задачи по копированию данных с одного листа на другой без использования и с использованием массивов. Вызов из кода VBA Excel других процедур.

Условие задачи по копированию данных

На одном листе расположен список повторяющихся городов с информацией о предприятиях общепита:

Исходная таблица задания №1

Исходная таблица задания №1

Необходимо данные по каждому городу перенести в одну строку на другом листе (таблица обрезана справа):

Часть результирующего списка задания №1

Часть результирующего списка задания №1

Решение копированием с листа на лист

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

Sub Resheniye1()

Dim n1 As Long, n2 As Long, n3 As Long, n4 As Long, _

i1 As Long, gorod As Variant

n1 = Sheets(«Лист1»).Cells(1, 1).CurrentRegion.Rows.Count

  For i1 = 1 To n1

    With Sheets(«Лист1»)

      If gorod <> .Cells(i1, 1) Then

        gorod = .Cells(i1, 1)

        n2 = 1

        n3 = n3 + 1

        n4 = 1

      Else

        n2 = 2

      End If

      Do While .Cells(i1, n2) <> «»

        Sheets(«Лист2»).Cells(n3, n4) = .Cells(i1, n2)

        n4 = n4 + 1

        n2 = n2 + 1

      Loop

    End With

  Next

End Sub

Переменные:

  • n1 – количество строк в исходной таблице;
  • n2 – номер столбца текущей ячейки исходной таблицы, к которой обращается цикл;
  • n3 – номер строки текущей ячейки на втором листе;
  • n4 – номер столбца текущей ячейки на втором листе;
  • i1 – счетчик цикла For… Next;
  • gorod – переменная с наименованием города, предназначенная для контроля за сменой текущего города, который обрабатывается циклом.

Решение с использованием массивов

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

‘Объявление глобальных переменных

‘в разделе Declarations

Dim massiv1 As Variant, n2 As Long, _

n3 As Long, i1 As Long, txt1 As Variant

‘Исполняемая процедура для решения

‘задания вторым способом

Sub Resheniye2()

Dim n1 As Long, gorod As Variant

With Sheets(«Лист1»).Cells(1, 1)

    massiv1 = .CurrentRegion

    n1 = .CurrentRegion.Rows.Count

    n2 = .CurrentRegion.Columns.Count

End With

n3 = 0

txt1 = «»

  For i1 = 1 To n1

    If gorod <> massiv1(i1, 1) Then

      If txt1 <> «» Then

        Call Vstavka

      End If

        gorod = massiv1(i1, 1)

        txt1 = massiv1(i1, 1)

        Call Kopirovanie

    Else

        Call Kopirovanie

    End If

    If i1 = n1 Then

        Call Vstavka

    End If

  Next

End Sub

‘Копирование данных из массива в

‘строковую переменную через разделитель

Sub Kopirovanie()

Dim i2 As Long

  For i2 = 2 To n2

    If massiv1(i1, i2) <> Empty Then

      txt1 = txt1 & «|» & massiv1(i1, i2)

    End If

  Next

End Sub

‘Обработка данных из строковой

‘переменной в дополнительных массивах и

‘вставка очередной строки на второй лист

Sub Vstavka()

Dim n4 As Long, massiv2 As Variant, _

massiv3 As Variant, i3 As Long

n3 = n3 + 1

massiv2 = Split(txt1, «|»)

n4 = UBound(massiv2)

ReDim massiv3(0 To 0, 0 To n4)

  For i3 = 0 To n4

    massiv3(0, i3) = massiv2(i3)

  Next

Sheets(«Лист2»).Range(Cells(n3, 1), _

Cells(n3, n4 + 1)).Value = massiv3

End Sub

Подпрограммы Kopirovanie и Vstavka используются в цикле For... Next процедуры Resheniye2 по два раза, поэтому их коды вынесены за пределы процедуры Resheniye2 и вызываются по мере необходимости.

Переменные:

  • massiv1 – его элементам присваиваются значения ячеек исходной таблицы;
  • massiv2 – одномерный массив, заполняемый данными из переменной txt1;
  • massiv3 – двумерный массив, заполняемый данными из одномерного массива massiv2 и используемый для вставки очередной строки на второй лист;
  • txt1 – сюда копируются через разделитель значения элементов массива massiv1, предназначенные для заполнения очередной строки на втором листе;
  • n1 – количество строк в исходной таблице;
  • n2 – количество столбцов в исходной таблице;
  • n3 – номер текущей строки на втором листе;
  • n4 – количество столбцов текущей строки на втором листе (соответствует количеству элементов массива massiv2);
  • i1, i2, i3 – счетчики цикла For… Next;
  • gorod – переменная с наименованием города, предназначенная для контроля за сменой текущего города, который обрабатывается циклом.

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


Копирование, с листа на лист (по нескольким условиям)

Max16

Дата: Среда, 01.06.2016, 16:18 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 11


Репутация:

0

±

Замечаний:
20% ±


Excel 2007

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

Суть проблемы следующая:
Есть массив информации на одном из листов книги (Area1), этот самый массив нужно преобразовать в итоговую таблицу, по заданным критериям (собака, кот, попугай), вид которой представлен на (Лист4). Файл прикладываю

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

Суть макроса, как мне представляется: создать итоговую таблицу, как у меня (в самом макросе задать переменные:

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

P.S. я возможно несколько наглею, прося о такой помощи. Поэтому не судите строго

К сообщению приложен файл:

2149532.xlsm
(28.5 Kb)


123

 

Ответить

wild_pig

Дата: Среда, 01.06.2016, 16:47 |
Сообщение № 2

Группа: Проверенные

Ранг: Обитатель

Сообщений: 516


Репутация:

97

±

Замечаний:
0% ±


2003, 2013

Тут просто перенесли данные с одного листа на другой в соответствии с животинами. Это при условии совпадения столбцов с датами.
[vba]

Код

Sub uuu()
    ‘объявляем переменные
    Dim a() ‘динамический массив (пока что безразмерный)
    Dim i&, j&, rw& ‘длинные целые числа (счётчики)
‘——————-
    ‘присваиваем переменной значения диапазона с листа
    ‘массив сам примет нужные размеры
    a = Sheets(«Area1»).UsedRange.Value
    With Sheets(«Лист4») ‘ссылка на объект для упрощения синтаксиса
        ‘в пределах конструкции With … End With, если будет нужно ссылаться на «лист4» пишем точку
        For rw = 3 To .Cells(Rows.Count, 2).End(xlUp).Row ‘цикл от 3 до номера последней непустой ячейки во 2-м столбце
            If .Cells(rw, 2) <> «» Then ‘если значение ячейки не пусто то
                For i = 1 To UBound(a) ‘цикл по массиву от 1 до наибольшего индекса 1-го измерения массива (строки)
                    ‘сравниваем значение из массива со значением во 2-м столбце, ищем животное
                    If a(i, 1) = .Cells(rw, 2) Then ‘если значение элемента массива равно значению ячейки то
                        rw = rw + 1 ‘увеличиваем счётчик строк
                        For j = 1 To UBound(a, 2) ‘цикл от 1 до наибольшего индекса 2-го измерения массива (столбцы)
                            ‘вносим значения в соответствующие ячейки из массива на лист
                            .Cells(rw, j + 1) = a(i, j) ‘j + 1 потому что в массиве <=15 в 3-м столбце а на листе 4 в 4-м
                        Next
                    End If
                Next
            End If
        Next
    End With
    MsgBox «Фсё гуд!» ‘сообщеньице
End Sub

[/vba]

Сообщение отредактировал wild_pigЧетверг, 02.06.2016, 12:16

 

Ответить

Max16

Дата: Четверг, 02.06.2016, 10:45 |
Сообщение № 3

Группа: Пользователи

Ранг: Новичок

Сообщений: 11


Репутация:

0

±

Замечаний:
20% ±


Excel 2007

Уважаемый wild_pig, спасибо за помощь.

Но я к своему сожалению не до конца смог разобраться с Вашим макросом.
Я понял следующее:

[vba]

Код

Sub uuu()
‘задаем переменные массиву и значениям: i,j
    Dim a()                 
    Dim i&, j&
‘—————
‘задаем переменную a как массив (лист «Area1»)   
  a = Sheets(«Area1»).UsedRange.Value   

    ‘Задаем массив (с 3 строки 2 столбца до конца)для «Листа4»              
    With Sheets(«Лист4»)
        For rw = 3 To .Cells(Rows.Count, 2).End(xlUp).Row    

‘Если в заданном массиве ячейка не пуста, то      
If .Cells(rw, 2) <> «» Then     

       ‘Находим совпадение этой непустой ячейки на «Листе4» (с ячейкой на листе «Area1»)       
                For i = 1 To UBound(a)                   
                    If a(i, 1) = .Cells(rw, 2) Then

‘Далее. Строку принимаем равной (последняя строка +1)                    
                      rw = rw + 1                  
‘Вот тут я не совсем понимаю!!! Мы опять задаем массив для «Area1» для поиска 2-го значения?                      
                         For j = 1 To UBound(a, 2)       
‘Почему мы в качестве столбца задаем данные по строке (j)?              
                            .Cells(rw, j + 1) = a(i, j)                     
                        Next
                    End If
                Next
            End If
        Next
    End With
    MsgBox «Фсё гуд!»

[/vba]

Если Вы мне укажите, правильно ли я его (макрос) понимаю, буду признателен!
Ну и простите мою неграмотность в VBA — но насколько я знал, UBound считает предел по строке, но как я понимаю, здесь эта функция считает столбцы?


123

Сообщение отредактировал Max16Четверг, 02.06.2016, 11:02

 

Ответить

wild_pig

Дата: Четверг, 02.06.2016, 12:12 |
Сообщение № 4

Группа: Проверенные

Ранг: Обитатель

Сообщений: 516


Репутация:

97

±

Замечаний:
0% ±


2003, 2013


Не совсем так )
Код выше поправил.

 

Ответить

Max16

Дата: Четверг, 02.06.2016, 12:58 |
Сообщение № 5

Группа: Пользователи

Ранг: Новичок

Сообщений: 11


Репутация:

0

±

Замечаний:
20% ±


Excel 2007

wild_pig, Большое спасибо за помощь). Благодаря Вам — разобрался


123

 

Ответить

Max16

Дата: Четверг, 02.06.2016, 18:50 |
Сообщение № 6

Группа: Пользователи

Ранг: Новичок

Сообщений: 11


Репутация:

0

±

Замечаний:
20% ±


Excel 2007

Уважаемый wild_pig, я уже замучил Вас… В любом случае Вы очень здорово меня выручили)
Но если Вам не трудно уделите немного внимания. Я доработал немного Ваш код, по аналогии, вынеся на отдельный лист критерии: кот, собака, попугай
Благодаря этому итоговая таблица формируется без пробелов, и удобно менять критерии. Но мне нужно вставить после каждого критерия (после всех котов, собак и попугаев), строку [итого:].
Я попытался ставить код в конце макроса, но он сначала формирует массив по заданным условиям и только потом ставит строку [итого]

Собственно вот подправленный макрос:
[vba]

Код

Sub uuu()
    Dim a()
    Dim b()
    Dim i&, j&, q&
‘—————
    a = Sheets(«Area1»).UsedRange.Value
    b = Sheets(«Критерий»).UsedRange.Value ‘присвоил переменное значение диапазону Лист:»Критерий»

          With Sheets(«Лист4»)
        For rw = 3 To .Cells(Rows.Count, 2).End(xlUp).Row
            If .Cells(rw, 2) <> «» Then
                For i = 1 To UBound(a)
                  For q = 1 To UBound(b) ‘цикл по массиву от 1 до наибольшего индекса 1-го измерения массива

                                    If a(i, 1) = b(q, 1) Then ‘Если значение элекмента массива («Area1») = значению элекмента массива («Критерий»), то
                        rw = rw + 1

                                                 For j = 1 To UBound(a, 2)
                            .Cells(rw, j + 1) = a(i, j)
                            .Cells(rw + 1, 2).FormulaR1C1 = «Итого:» ‘Пытался добавить строку [итого], но он ее добавляет после того как сформирует массив по критериям
                             Next
                        End If
                    Next
                Next
            End If
        Next
        Dim lLastRow As Long
       End With
    MsgBox «Фсё гуд!»
End Sub

[/vba]

Пример также прикладываю

К сообщению приложен файл:

8284379.xlsm
(25.0 Kb)


123

 

Ответить

wild_pig

Дата: Суббота, 04.06.2016, 13:05 |
Сообщение № 7

Группа: Проверенные

Ранг: Обитатель

Сообщений: 516


Репутация:

97

±

Замечаний:
0% ±


2003, 2013

Нарисуйте ручками итоговую таблицу с итогами

 

Ответить

Max16

Дата: Суббота, 04.06.2016, 15:03 |
Сообщение № 8

Группа: Пользователи

Ранг: Новичок

Сообщений: 11


Репутация:

0

±

Замечаний:
20% ±


Excel 2007

Уважаемый wild_pig, таблицу необходимого вида я прикладываю к сообщению:

Область данных,та же (Area1)
Критерии [кот, собака, попугай] вынесены на отдельный лист (Лист!Критерии)
На листе4 — итоговая таблица. В начале имеем только строку 2 остальное подгружается макросом: Собственно таблица заполняется в соответствии с порядком расположения критериев

P.S. Итоговый вид таблицы, на листе4. Для наглядности я выделили красным цветом: критерий, синей заливкой: итого

К сообщению приложен файл:

7990798.xlsm
(23.1 Kb)


123

Сообщение отредактировал Max16Суббота, 04.06.2016, 15:04

 

Ответить

RAN

Дата: Суббота, 04.06.2016, 15:33 |
Сообщение № 9

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

Голимый макрорекордер
[vba]

Код

Sub Макрос1()
    ActiveSheet.UsedRange.Copy
    Sheets.Add(After:=Sheets(Sheets.Count)).Paste
    With ActiveSheet
        .Sort.SortFields.Clear
        .Sort.SortFields.Add Key:=Range(«A1»), _
                             SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .Sort.SetRange .UsedRange.Offset(1)
        .Sort.Header = xlGuess
        .Sort.MatchCase = False
        .Sort.Orientation = xlTopToBottom
        .Sort.SortMethod = xlPinYin
        .Sort.Apply
        .UsedRange.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(3, 4, 5, 6, _
                    7, 8, 9, 10), Replace:=True, PageBreaks:=False, SummaryBelowData:=True
        .UsedRange.ClearOutline
    End With
End Sub

[/vba]


Быть или не быть, вот в чем загвоздка!

 

Ответить

wild_pig

Дата: Суббота, 04.06.2016, 16:01 |
Сообщение № 10

Группа: Проверенные

Ранг: Обитатель

Сообщений: 516


Репутация:

97

±

Замечаний:
0% ±


2003, 2013

[vba]

Код

Sub uuu()
    Dim a(), b()
    Dim i&, ii&, rw&, x&, lr&
‘——————————
    ‘берём диапазоны в массивы
    a = Sheets(«Area1»).UsedRange.Value
    b = Sheets(«Критерий»).UsedRange.Value

        With Sheets(«Лист4»)
        rw = 3 ‘номер первой строки для выгрузки
        lr = .UsedRange.Rows.Count ‘номер последней строки диапазона
        If lr > 3 Then ‘если последняя строка больше первой  то
            .Rows(rw & «:» & lr).Delete ‘удаляем строки с первой по последнюю
        End If
        For i = 2 To UBound(b) ‘идём по массиву с критериями
            .Cells(rw, 2) = b(i, 1) ‘вносим название группы
            .Cells(rw, 2).Font.Bold = True ‘делаем жирным шрифт
            rw = rw + 1 ‘увеличиваем счётчик строк
            x = 1 ‘сбрасываем в начало счётчик позиций в группе
            For ii = 2 To UBound(a) ‘проходим по массиву с данными
                ‘если значение не пусто и совпадает с названием группы то
                If a(ii, 1) <> «» And a(ii, 1) = b(i, 1) Then
                    .Cells(rw, 1) = x ‘пишем номер позиции
                    For j = 1 To UBound(a, 2) ‘вносим строку из массива на лист
                        .Cells(rw, j + 1) = a(ii, j)
                    Next
                    rw = rw + 1 ‘увеличиваем счётчик строк
                    x = x + 1 ‘увеличиваем счётчик позиций
                End If
            Next
            .Cells(rw, 2) = «Итого » & LCase(b(i, 1)) & «:» ‘вносим итого
            .Cells(rw, 2).Font.Bold = True ‘делаем шрифт жирным
            rw = rw + 1 ‘увеличиваем счётчик строк
        Next
    End With
    MsgBox «Готово!» ‘радостная весть
End Sub

[/vba]
В Аrea1 нет значений больше 130 дней, зачем на Лист4 есть? Дальше будем думать что и как в итого считать?

 

Ответить

Max16

Дата: Суббота, 04.06.2016, 16:58 |
Сообщение № 11

Группа: Пользователи

Ранг: Новичок

Сообщений: 11


Репутация:

0

±

Замечаний:
20% ±


Excel 2007

wild_pig, большое спасибо)

Столбец >130 остался в примере из рабочего файла. В Area1 я просто не добавил дынные попадающие в данное условие.

По подсчету: если можно подсчитать в строке [итого] (на «листе4») сколько было котов, собак и попугаев. Это было бы очень здорово!

На всякий, прилепляю пример, как должен выглядеть подсчет

К сообщению приложен файл:

5988994.xlsm
(22.0 Kb)


123

 

Ответить

wild_pig

Дата: Суббота, 04.06.2016, 17:00 |
Сообщение № 12

Группа: Проверенные

Ранг: Обитатель

Сообщений: 516


Репутация:

97

±

Замечаний:
0% ±


2003, 2013

Это было бы очень здорово!

Это был сарказм. Уже наверное сами.

 

Ответить

Max16

Дата: Суббота, 04.06.2016, 17:28 |
Сообщение № 13

Группа: Пользователи

Ранг: Новичок

Сообщений: 11


Репутация:

0

±

Замечаний:
20% ±


Excel 2007

wild_pig, да, пора и честь знать)))

Еще раз спасибо за помощь)


123

 

Ответить

wild_pig

Дата: Суббота, 04.06.2016, 17:39 |
Сообщение № 14

Группа: Проверенные

Ранг: Обитатель

Сообщений: 516


Репутация:

97

±

Замечаний:
0% ±


2003, 2013

Вы #9 сообщение смотрели?

 

Ответить

Budkay91

Дата: Среда, 13.03.2019, 16:22 |
Сообщение № 15

Группа: Пользователи

Ранг: Прохожий

Сообщений: 2


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

Здравствуйте, Господа!
Нужна помощь в написании макроса для excel 2016, для переноса ячеек с одного листа на другой, если выполняется условие.
Я в этом деле совсем начинающий, начальство нагибает закончить файл по спецодежде, а парень который начинал его делать уволился. Буду признателен!!! Очень сильно!!! SOS!!!
Для примера скидываю файлик «пример», в нем на листе «сотрудники», условие, если в столбце «Е» ячейки <= СЕГОДНЯ, то данная ячейка подсвечивается, это я допер. Теперь мне нужно с помощью макроса, чтобы тот сотрудник который подсветился автоматически попадал на лист «экзамен», помогите мне пожалуйста для примера, а свой глобальный файл я догоню доработаю!!! Заранее всем благодарен.

К сообщению приложен файл:

9569606.xlsm
(21.9 Kb)

 

Ответить

_Boroda_

Дата: Среда, 13.03.2019, 16:29 |
Сообщение № 16

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

— Прочитайте Правила форума
— Создайте свою тему согласно п.5q Правил форума
Эта тема закрыта


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Содержание

  • 1 Файл примера
      • 1.0.1 Скачать
  • 2 Метод гиперссылок
  • 3 Макросом
  • 4 Процедура создания
    • 4.1 Способ 1: автофигура
    • 4.2 Способ 2: стороннее изображение
    • 4.3 Способ 3: элемент ActiveX
    • 4.4 Способ 4: элементы управления формы
    • 4.5 Помогла ли вам эта статья?
    • 4.6 Способ 1. Горячие клавиши
    • 4.7 Способ 2. Переход мышью
    • 4.8 Способ 3. Оглавление
    • 4.9 Ссылки по теме
  • 5 Как сделать кнопку на листе Excel
  • 6 Как в Excel сделать кнопку с макросом
  • 7 Другие варианты использования кнопок
  • 8 Как сделать кнопку сортировки в Excel для таблиц

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

Файл примера

Скачать

Метод гиперссылок

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

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

    Для добавления фигуры или рисунка на лист воспользуйтесь меню Вставка:

    как сделать кнопку перехода на другой лист в excel

    После этого отредактируйте объекты по своему вкусу. Например, я добавил тень.

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

    Для вставки гиперссылки щёлкните на вашем графическом элементе правой кнопкой мыши и в контекстном меню выберите пункт Гиперссылка… В открывшемся диалоговом окне надо выбрать слева раздел Место в документе, выбрать нужный нам лист (в нашем случае он называется Гиперссылки) и ввести адрес ячейки, на которую должен встать табличный курсор (у нас B6). Нажмите OK. Протестируйте работу кнопки.

    как сделать кнопку перехода на другой лист в excel

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

    как сделать кнопку перехода на другой лист в excel

    Чтобы избавиться от этого эффекта можно использовать очень простой трюк на основе макросов

Макросом

  1. Вместо того, чтобы добавлять гиперссылку можно назначить очень простой VBA обработчик события нажатия мыши на нашем графическом объекте. Если вы уже добавили гиперссылку, то удалите её через контекстное меню фигуры. Я рекомендую дать вашим фигурам какие-то более благозвучные имена. Надо выделить фигуру и через адресную строку присвоить ей новое имя:

    как сделать кнопку перехода на другой лист в excel

  2. После этого нужно в контекстном меню фигуры выбрать Назначить макрос…

    как сделать кнопку перехода на другой лист в excel

    В открывшемся окне Назначить макрос объекту нажать кнопку Создать:

    как сделать кнопку перехода на другой лист в excel

    После этого вы переноситесь в VBA редактор, где система предлагает вам написать программный код обработчика события. Когда вы проделаете вышеописанное для всех шести кнопок, то это должно выглядеть так:

    как сделать кнопку перехода на другой лист в excel

  3. Теперь можно ввести VBA код, который очень прост. Мы будем использовать метод Goto объекта Applications, который имеет 2 параметра:

    1. Ссылку на ячейку, в которую необходимо перейти табличному курсору

    2. Параметр, который предписывает (или нет) данной ячейке занимать в окне левый верхний угол. True или False.

    Так будет выглядеть наш код для файла примера:

Вот такой простой, но полезный трюк 🙂

как сделать кнопку перехода на другой лист в excel

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

Процедура создания

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

Способ 1: автофигура

Прежде всего, рассмотрим, как создать кнопку из набора встроенных фигур Excel.

  1. Производим перемещение во вкладку «Вставка». Щелкаем по значку «Фигуры», который размещен на ленте в блоке инструментов «Иллюстрации». Раскрывается список всевозможных фигур. Выбираем ту фигуру, которая, как вы считаете, подойдет более всего на роль кнопки. Например, такой фигурой может быть прямоугольник со сглаженными углами.
  2. После того, как произвели нажатие, перемещаем его в ту область листа (ячейку), где желаем, чтобы находилась кнопка, и двигаем границы вглубь, чтобы объект принял нужный нам размер.
  3. Теперь следует добавить конкретное действие. Пусть это будет переход на другой лист при нажатии на кнопку. Для этого кликаем по ней правой кнопкой мыши. В контекстном меню, которое активируется вслед за этим, выбираем позицию «Гиперссылка».
  4. В открывшемся окне создания гиперссылки переходим во вкладку «Местом в документе». Выбираем тот лист, который считаем нужным, и жмем на кнопку «OK».

как сделать кнопку перехода на другой лист в excel

Теперь при клике по созданному нами объекту будет осуществляться перемещение на выбранный лист документа.

как сделать кнопку перехода на другой лист в excel

Урок: Как сделать или удалить гиперссылки в Excel

Способ 2: стороннее изображение

В качестве кнопки можно также использовать сторонний рисунок.

  1. Находим стороннее изображение, например, в интернете, и скачиваем его себе на компьютер.
  2. Открываем документ Excel, в котором желаем расположить объект. Переходим во вкладку «Вставка» и кликаем по значку «Рисунок», который расположен на ленте в блоке инструментов «Иллюстрации».
  3. Открывается окно выбора изображения. Переходим с помощью него в ту директорию жесткого диска, где расположен рисунок, который предназначен выполнять роль кнопки. Выделяем его наименование и жмем на кнопку «Вставить» внизу окна.
  4. После этого изображение добавляется на плоскость рабочего листа. Как и в предыдущем случае, его можно сжать, перетягивая границы. Перемещаем рисунок в ту область, где желаем, чтобы размещался объект.
  5. После этого к копке можно привязать гиперссылку, таким же образом, как это было показано в предыдущем способе, а можно добавить макрос. В последнем случае кликаем правой кнопкой мыши по рисунку. В появившемся контекстном меню выбираем пункт «Назначить макрос…».
  6. Открывается окно управление макросами. В нем нужно выделить тот макрос, который вы желаете применять при нажатии кнопки. Этот макрос должен быть уже записан в книге. Следует выделить его наименование и нажать на кнопку «OK».

как сделать кнопку перехода на другой лист в excel

Теперь при нажатии на объект будет запускаться выбранный макрос.

как сделать кнопку перехода на другой лист в excel

Урок: Как создать макрос в Excel

Способ 3: элемент ActiveX

Наиболее функциональной кнопку получится создать в том случае, если за её первооснову брать элемент ActiveX. Посмотрим, как это делается на практике.

  1. Для того чтобы иметь возможность работать с элементами ActiveX, прежде всего, нужно активировать вкладку разработчика. Дело в том, что по умолчанию она отключена. Поэтому, если вы её до сих пор ещё не включили, то переходите во вкладку «Файл», а затем перемещайтесь в раздел «Параметры».
  2. В активировавшемся окне параметров перемещаемся в раздел «Настройка ленты». В правой части окна устанавливаем галочку около пункта «Разработчик», если она отсутствует. Далее выполняем щелчок по кнопке «OK» в нижней части окна. Теперь вкладка разработчика будет активирована в вашей версии Excel.
  3. После этого перемещаемся во вкладку «Разработчик». Щелкаем по кнопке «Вставить», расположенной на ленте в блоке инструментов «Элементы управления». В группе «Элементы ActiveX» кликаем по самому первому элементу, который имеет вид кнопки.
  4. После этого кликаем по любому месту на листе, которое считаем нужным. Сразу вслед за этим там отобразится элемент. Как и в предыдущих способах корректируем его местоположение и размеры.
  5. Кликаем по получившемуся элементу двойным щелчком левой кнопки мыши.
  6. Открывается окно редактора макросов. Сюда можно записать любой макрос, который вы хотите, чтобы исполнялся при нажатии на данный объект. Например, можно записать макрос преобразования текстового выражения в числовой формат, как на изображении ниже. После того, как макрос записан, жмем на кнопку закрытия окна в его правом верхнем углу.

Теперь макрос будет привязан к объекту.

Способ 4: элементы управления формы

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

  1. Переходим во вкладку «Разработчик» и кликаем по знакомой нам кнопке «Вставить», размещенной на ленте в группе «Элементы управления». Открывается список. В нем нужно выбрать первый же элемент, который размещен в группе «Элементы управления формы». Данный объект визуально выглядит точно так же, как и аналогичный элемент ActiveX, о котором мы говорили чуть выше.
  2. Объект появляется на листе. Корректируем его размеры и место расположения, как уже не раз делали ранее.
  3. После этого назначаем для созданного объекта макрос, как это было показано в Способе 2 или присваиваем гиперссылку, как было описано в Способе 1.

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

Мы рады, что смогли помочь Вам в решении проблемы.

Задайте свой вопрос в комментариях, подробно расписав суть проблемы. Наши специалисты постараются ответить максимально быстро.

Помогла ли вам эта статья?

Да Нет

У вас бывают файлы, где много листов? Реально много — несколько десятков? Переход на нужный лист в такой книге может напрягать — пока найдешь нужный ярлычок листа, пока по нему щелкнешь…

Способ 1. Горячие клавиши

Сочетания Ctrl+PgUp и Ctrl+PgDown позволят вам быстро пролистывать вашу книгу вперед-назад.

Способ 2. Переход мышью

Просто щелкните правой кнопкой мыши по кнопкам прокрутки, находящимся слева от ярлычков листов и выберите нужный лист:

Просто и изящно. Работает во всех версиях Excel.

Способ 3. Оглавление

Это способ трудоемкий, но красивый. Суть его в том, чтобы создать специальный лист с гиперссылками, ведущими на другие листы вашей книги и использовать его как «живое» оглавление.

Вставьте в книгу пустой лист и добавьте на него гиперссылки на нужные вам листы, используя команду Вставка — Гиперссылка (Insert — Hyperlink)

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

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

Ссылки по теме

  • Как создать лист-оглавление книги Excel для быстрого перехода на нужный лист
  • Автоматическое создание оглавления книги на отдельном листе с гиперссылками (надстройка PLEX)

Кнопка в Excel как ссылка на ячейку, какой-либо инструмент, созданный макрос значительно упрощает работу в программе. Чаще всего это графический объект с назначенным макросом или гиперссылкой. Рассмотрим, как сделать такую кнопку.

Суть работы: создать графический объект и назначить для него макрос или гиперссылку. Рассмотрим подробнее.

Способы создания графического объекта:

  1. Кнопка – элемент ActiveX. Переходим на вкладку «Разработчик». Нажимаем кнопку «Вставить». Открывается меню с набором элементов для вставки. Выбираем первый элемент ActiveX – «кнопку» (в виде серого кирпичика). Теперь рисуем курсором кнопку необходимого размера.
  2. Кнопка – элемент управления формы. Снова переходим на вкладку «Разработчик». Открываем меню инструмента «Вставить». Теперь выбираем элемент «кнопка» из первой группы (такой же серый кирпичик). Рисуем кнопку. Сразу открывается окно для назначения макроса: можно сделать сразу, а можно попозже.
  3. Кнопка – автофигура. Переходим на вкладку «Вставка». В меню «Иллюстрации» выбираем подходящую фигуру. Рисуем. По готовой фигуре можно щелкнуть правой кнопкой мыши и изменить оформление.
  4. Кнопка – рисунок. Переходим на вкладку «Вставка». В меню «Иллюстрации» выбираем инструмент «Рисунок». Для выбора будут предложены варианты, которые имеются на компьютере.

Графический объект создан. Теперь нужно сделать его «рабочим».

Как в Excel сделать кнопку с макросом

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

Если мы использовали элемент ActiveX, то:

Для других графических объектов макрос назначается так же. Процедура еще проще. Нужно щелкнуть правой кнопкой мыши по нарисованной кнопке или картинке и выбрать инструмент «Назначить макрос».

Другие варианты использования кнопок

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

Нарисуем графический объект и выделим его. На вкладке «Вставка» найдем кнопку «Гиперссылка».

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

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

Подобные задачи можно выполнять и с помощью макросов. Например, чтобы при нажатии, пользователь попадал в определенную ячейку (М6), прописываем следующий код:

Sub Макрос 1()
Range(«M6»).Select
End Sub

Точно так же можно назначить макрос диаграмме, объектам WordArt, SmartAtr.

Как сделать кнопку сортировки в Excel для таблиц

Для показательного примера создайте тестовую таблицу как на рисунке:

  1. Вместо заголовков колонки таблицы добавим автофигуры, которые будут служить кнопками для сортировки по столбцам таблицы.
  2. В режиме Visual Basic — ALT+F11 в папке Modules вставляем новый модуль Module1. Для этого делаем по папке правый щелчок мышкой и выбираем: Insert-Module.
  3. Делаем двойной щелчок по Module1 и вводим в него следующий код:
  4. Назначаем каждой автофигуре свой макрос: для «Наименование» – Макрос1, а для «Май» – Макрос2 и т.д.

Все теперь достаточно только кликнуть по заголовку и таблица отсортирует данные относительно определенного столбца. Для удобства столбец «Наименование» Макрос1 сортирует по возрастанию благодаря параметру Order:=xlAscending. Во всех остальных столбцах присвоены макросы (2,3,4) с параметром Order:=xlDescending, который задает тип сортировки по убыванию. Чтобы видно было, в каком месяце было больше продано товара.

Скачать пример кнопки сортировки

Примечание. Такие простые макросы можно создать в автоматическом режиме без программирования или без написания VBA-кода, с помощью инструмента «Запись макроса».

Понравилась статья? Поделить с друзьями:
  • Excel макрос с выпадающими списками
  • Excel макрос редактирование ячейки
  • Excel макрос разрыв страницы
  • Excel макрос размер ячейки
  • Excel макрос работает только на одном листе