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

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

Обращение к макросу через кнопку, как получить и передать данные на другой лист в книге excel

Допустим в ячейке A1 у нас будет число 2, в ячейке B1 тоже будет число 2 и далее разберём как в ячейку C1 получить сумму чисел с помощью макроса.

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

Будем использовать ее для второго примера, для второго макроса, переименуем ее, кнопка два.

Для написания кода макроса перейдём в редактор Visual Basic, добавим модуль напишем первую подпрограмму test1.

Объявим несколько переменных для значений ячеек - a, b тип Integer, цельно численное значение.

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

a = cells(1,1)
.

Всплывающая подсказка показывает, что это у нас row – строка, а это у нас колонка – столбец, допишем value - значение.

Для пометки, в комментарий напишем, что у нас в каком порядке идет – row, col, на русском напишем - строка, столбец.

Для переменной

b = Cells(1 , 2). Value
– первая строка, второй столбец.

Можно объявить здесь выше переменную C, далее пишем

c = a + b
.

Выведем результат -

Cells(1 , 3). Value
– первая строка, третий столбец равно c.

Sub test1()
Dim a, b As Integer

a = Cells(1, 1).Value ' row, col
b = Cells(1, 2).Value ' row, col
c = a + b
Cells(1, 3).Value = c ' row, col

End Sub

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

Что же нам сделать, если у нас нужно будет данные получать с разных листов или передавать полученный результат в другой лист?

Для примера скопирую подпрограмму test1, вставлю ниже и переименую в test2.

Sub test2()
Dim a, b As Integer

a = Sheets("Лист1").Cells(1,1).Value
b = Sheets("Лист1").Cells(1,2).Value
c = a + b

Sheets("Лист2").Cells(1,3).Value = c

End Sub

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

В скобочках мы пишем, что данные мы берём лист один, если кнопка и данные на том же листе, получаемую информацию можно так не оформлять.

Но если вам нужно передать результат вычислений на другой лист, например, Лист2, то вы должны указать имя листа.

Теперь назначим макрос test2 для Кнопки2, давайте изменю значения ячеек, два-три для примера. При нажатии на первую кнопку результат равен пяти, при нажатии на вторую кнопку на Лист2 тоже результат равен пяти.

Если Вам не нравится вариант записи Cells(1,1) и сложно запомнить где что – где строки, а где столбцы – Вы можете обращаться к ячейкам по их именам A1, B1, C1 через Range – это диапазон или адрес ячейки.

Изменим Cells на Range, в круглых скобках в двойных кавычках вам нужно будет указать имя ячейки на английском А1.

Sub test2()
Dim a, b As Integer

a = Sheets("Лист1").Range("A1").Value
b = Sheets("Лист1").Range("B1").Value
c = a + b

Sheets("Лист2").Range("C1").Value = c

End Sub

Соответственно здесь у нас будет Range("B1"), ну и здесь у нас будет Range("C1"), результат не изменится, запустим test2 и проверим.

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

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

Смотрите видео: Обращение к макросу через кнопку, как получить и передать данные на другой лист в книге excel




Понравилась статья? Поделитесь ею с друзьями и напишите отзыв в комментариях!

Предыдущие статьи

We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies). You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.

Ok