Как перенести кнопки макроса с одного листа на другой

Автор Посетитель, 16 августа 2023, 18:50

Посетитель

Здравствуйте! Скажите, пожалуйста, как перенести копки "ДОбавить строчку" и "Фильтр" на лист №1. Нужно чтобы кнопка "ДОбавить строчку" была на Листе1, но таблица заполнялась на Листе2.

Администратор

Написал вам два письма на почту с заголовком "Письмо с Форума по VBA, Excel и Word". Написал именно на почту, а не на форум.

Кнопки в Экселе есть трёх видов

1. Кнопка, которая вставляется так: вкладка "Разработчик" (по умолчанию её нет - вам надо её отобразить) - группа "Элементы управления" - кнопка "Вставить" - раздел "Элементы управления формы".

2. Кнопка, которая вставляется так: вкладка "Разработчик" (по умолчанию её нет - вам надо её отобразить) - группа "Элементы управления" - кнопка "Вставить" - раздел "Элементы ActiveX".

3. Кнопка-изображение: фигура или рисунок. Фигуре или рисунку можно назначить макрос и они после этого становятся кнопками.


Перенос кнопки

Если кнопка "Элемент ActiveX", сначала сделайте это: вкладка "Разработчик" (по умолчанию её нет - вам надо её отобразить) - группа "Элементы управления" - щёлкните кнопку "Режим конструктора" (у этой кнопки два состояния: нажата, не нажата; кнопка должна стать нажатой).

Способ 1
Щёлкните по кнопке правой кнопкой мыши - Копировать - перейдите на нужный лист - щёлкните по нужной ячейке правой кнопкой мыши - Параметры вставки - Вставить (в контекстном меню есть ещё пункт Вставить, вам нужно использовать раздел "Параметры вставки"). Кнопка перенесена.
Исходную кнопку можно так удалить: щёлкните по кнопке правой кнопкой мыши - нажмите на клавиатуре клавишу Delete.

Способ 2
Щёлкните по кнопке правой кнопкой мыши - Вырезать - перейдите на нужный лист - щёлкните по нужной ячейке правой кнопкой мыши - Параметры вставки - Вставить (в контекстном меню есть ещё пункт Вставить, вам нужно использовать раздел "Параметры вставки"). Кнопка перенесена.

Если кнопка "Элемент ActiveX", то нужно перенести событие кнопки на другой лист. Для этого перейдите в VBA, зайдите в модуль листа, на котором ранее находилась кнопка, найдите событие кнопки (у события имя выглядит примерно так: CommandButton1_Click), перенесите его в модуль листа, на который вы перенесли кнопку, на исходном листе событие удалите.

Если кнопка "Элемент ActiveX",  сделайте это: вкладка "Разработчик" (по умолчанию её нет - вам надо её отобразить) - группа "Элементы управления" - щёлкните кнопку "Режим конструктора" (у этой кнопки два состояния: нажата, не нажата; кнопка должна стать не нажатой).

Посетитель

Я извиняюсь, но я ничего на почту не получил.
В спаме тоже смотрел.

Администратор

На скриншоте было письмо, вы его получили и сделали скриншот этого письма.
А что вы ожидали получить на почту?

Посетитель

Я подумал, что вы мне формулу для Экселя прислали. Но в сообщениях только ссылки на комментарии которые вы писали на сайте раньше.

Администратор

Вы перепутали свои темы. В этой теме не формулы обсуждаются.
Про формулы я написал в другой теме.

Посетитель

Добрый день!
Скажите, пожалуйста, куда  вставить этот код, чтобы кнопка отображалась на листе 1, а действия происходили на листе2.
Dim l&
With Worksheets("Имя листа с таблицой")
l = .Range("B2").End(xlDown).Row + 1
.Cells(l, "C").Value = TextBox1
.Cells(l, "D").Value = TextBox8
.Cells(l, "E").Value = TextBox2
.Cells(l, "F").Value = TextBox3
.Cells(l, "G").Value = TextBox4
.Cells(l, "H").Value = ComboBox2
.Cells(l, "I").Value = ComboBox3
.Cells(l, "J").Value = TextBox5
.Cells(l, "K").Value = TextBox6
.Cells(l, "L").Value = TextBox7
End With

End Sub
Я так понимаю что куда-то сюда

'Выпадающий список "ComboBox1"
Private Sub UserForm_Activate()
Me.ComboBox1.Clear
Me.ComboBox1.AddItem "pdf"
Me.ComboBox1.AddItem "JPEG"
Me.ComboBox1.AddItem "MP3"
Me.ComboBox1.AddItem "JPG"
Me.ComboBox1.AddItem "DOC"
Me.ComboBox1.AddItem "DOCX"
Me.ComboBox1.AddItem "XLS"
Me.ComboBox1.AddItem "XLSX"
Me.ComboBox1.AddItem "ZIP"
Me.ComboBox1.AddItem "RAR"
Me.ComboBox1.AddItem "PNG"

End Sub

'Внесение данных в поля "TextBox1-8" и в "ComboBox2-3"
Private Sub CommandButton1_Click()
Dim zn1, zn2, zn3, zn4, zn5, zn6, zn7, zn8, zn9, zn10, l, adr

l = Range("B2").End(xlDown).Row

zn1 = TextBox1.Value
zn2 = TextBox2.Value
zn3 = TextBox3.Value
zn4 = TextBox4.Value
zn5 = TextBox5.Value
zn6 = ComboBox1.Value
zn7 = ComboBox2.Value
zn8 = TextBox6.Value
zn9 = TextBox7.Value
zn10 = TextBox8.Value

l = l + 1
adr = "C" & l
Range(adr).Value = zn1
adr = "D" & l
Range(adr).Value = zn2
adr = "E" & l
Range(adr).Value = zn3
adr = "F" & l
Range(adr).Value = zn4
adr = "G" & l
Range(adr).Value = zn5
adr = "H" & l
Range(adr).Value = zn6
adr = "I" & l
Range(adr).Value = zn7
adr = "J" & l
Range(adr).Value = zn8
adr = "K" & l
Range(adr).Value = zn9
adr = "L" & l
Range(adr).Value = zn10

End Sub

'Кнопка "Очистить"/ очищение "UserForm1"
Private Sub CommandButton2_Click()
Me.TextBox1.Value = " "
Me.TextBox2.Value = " "
Me.TextBox3.Value = " "
Me.TextBox4.Value = " "
Me.TextBox5.Value = " "
Me.TextBox6.Value = " "
Me.TextBox7.Value = " "
Me.TextBox8.Value = " "
Me.ComboBox1.Value = " "
Me.ComboBox2.Value = " "

End Sub
'Кнопка "Закрыть" / закрытие формы "UserForm1"
Private Sub CommandButton3_Click()
UserForm1.Hide
End Sub