powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Создание синхронно работающих кнопок
14 сообщений из 14, страница 1 из 1
Создание синхронно работающих кнопок
    #40101698
ВладимирВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!

На Лист1 Excel расположена кнопка ToggleButton1
На Лист2 расположена другая кнопка ToggleButton1

Нужно, чтобы эти кнопки работали синхронно.
Например я нажал ToggleButton1 на Листе1 - нужно, чтобы на Листе2 ToggleButton1 тоже нажалась.
Перешел на Лист2 и отжал ToggleButton1, на Листе 1 чтобы тоже отжалась.

Пытался решить вопрос самостоятельно сделав поиски по фразам типа:
Создание синхронно работающих кнопок VBA
Взаимосвязанные кнопки
Дубликат функционала кнопки

Ничего похожего не нашел.
Подскажите пожалуйста, как это можно реализовать?
...
Рейтинг: 0 / 0
Создание синхронно работающих кнопок
    #40102064
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирВ, ели на кнопках есть VBA код, то пропишите там необходимое действие
...
Рейтинг: 0 / 0
Создание синхронно работающих кнопок
    #40102067
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почитайте про события Event
...
Рейтинг: 0 / 0
Создание синхронно работающих кнопок
    #40102319
ВладимирВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: javascript
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.
Private Sub ToggleButton5_Click()

If ToggleButton5.Value Then

' Нажимаем и блокируем все модули
   ToggleButton1.Value = True
   ToggleButton2.Value = True
   ToggleButton3.Value = True
   ToggleButton4.Value = True
   
   ToggleButton1.Enabled = False
   ToggleButton2.Enabled = False
   ToggleButton3.Enabled = False
   ToggleButton4.Enabled = False
 
Else
' При отжимании Premium отпускаем RL и BT
   ToggleButton3.Value = False
   ToggleButton4.Value = False
   ToggleButton3.Enabled = True
   ToggleButton4.Enabled = True

' Если выбрана не Led, то отжимаем и разблокируем также [+] и RL
    If Sheets("Data").Range("AH2") <> "Led" Then
        ToggleButton1.Value = False
        ToggleButton2.Value = False
        ToggleButton1.Enabled = True
        ToggleButton2.Enabled = True
    End If
   
End If
End Sub



Есть кнопка ToggleButton5, которая уже функционирует как надо.
Нужно сделать ее клон на другом листе.
То есть, если нажать ТoggleButton5, на другом листе кнопка (назовем ее Клон1) тоже должна нажаться.
Если я перейду на другой лист и отожму Клон1, ToggleButton5 должна тоже отжаться и выполнить прописанные команды.
Никак не придумаю как это сделать.
...
Рейтинг: 0 / 0
Создание синхронно работающих кнопок
    #40102353
ВладимирВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One
почитайте про события Event

Что-то я начал читать и запутался, очень много информации.
Мне бы найти такой пример, я бы оттуда просто скопировал часть кода.
Наверняка кто-то где-то что-то подобное уже делал.
...
Рейтинг: 0 / 0
Создание синхронно работающих кнопок
    #40102361
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это значит за тебя задачу сделать? тебе нужно хоть какое-то понимание ООП.
первое - создать общий класс с событиями, в нём объявить универсальный метод, который делает, что тебе надо (параметр на вход должен быть лист) , использовать это класс уже в коде конкретного листа. если нужно,то добавляешь событие внутри метода и в этом событии уже отрабатываешь что тебе нужно на конкретном листе
...
Рейтинг: 0 / 0
Создание синхронно работающих кнопок
    #40102368
ВладимирВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One
это значит за тебя задачу сделать? тебе нужно хоть какое-то понимание ООП.
первое - создать общий класс с событиями, в нём объявить универсальный метод, который делает, что тебе надо (параметр на вход должен быть лист) , использовать это класс уже в коде конкретного листа. если нужно,то добавляешь событие внутри метода и в этом событии уже отрабатываешь что тебе нужно на конкретном листе

Да не надо за меня ничего делать.
Думал, что кто-нибудь знает, где можно посмотреть аналогичную задачу, наверняка кто-то похожее уже делал.
...
Рейтинг: 0 / 0
Создание синхронно работающих кнопок
    #40102401
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирВ
Думал, что кто-нибудь знает, где можно посмотреть аналогичную задачу, наверняка кто-то похожее уже делал.


добавьте в код кнопки следующую строку
Код: vbnet
1.
Sheets("ИмяЛистаГдеНаходитсяНужнаяКнопка").ToggleButton1.Value = ToggleButton1.Value



ЗЫЖ кнопка на том листе также называется ToggleButton1 , если имеет иное, то поменяйте на нужное
...
Рейтинг: 0 / 0
Создание синхронно работающих кнопок
    #40103058
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Один из вариантов:
1. На ленте вкладка «Разработчик» - установить «Режим Конструктора» (или в VBE - Run - Design Mode)
2. Правый клик на ToggleButton на листе - Свойства - LinkedCell – записать в поле: Лист1!A1
3. Повторить п.2 на на других листах на всех ToggleButtons группы

Вместо Лист1!A1 в п.2 может быть ссылка на любую одну и ту же ячейку, но обязательно с именем листа.
Эта ячейка может быть в скрытом столбце/строке/листе, или с форматом: ";;;"
...
Рейтинг: 0 / 0
Создание синхронно работающих кнопок
    #40103299
ВладимирВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо за советы.
Во всех вариантах разобрался, все работают.

От HandKot:
Совет правильный, но неполный, я в нем немного разобрался и доработал.
Чтобы кнопки полностью были взаимосвязаны нужно:

На Лист 2 добавить код:
Sheets("Лист1").ToggleButton1.Value = ToggleButton1.Value

а на Лист 1
Sheets("Лист2").ToggleButton1.Value = ToggleButton1.Value

Вот теперь кнопки полностью взаимосвязаны.

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

Так что имеем даже два варианта - либо пишем пару строк на VBA, либо через св-ва LinkedCell.
Оба способа прекрасно работают, принимаем на вооружение.
Всем, кто помогал вооружаться - ОГРОМНОЕ СПАСИБО!
...
Рейтинг: 0 / 0
Создание синхронно работающих кнопок
    #40125550
ВладимирВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!

Помогите разобраться с одной маленькой проблемой.
Есть 2 кнопки ToggleButton1 и ToggleButton2.
Необходимо реализовать очень простой алгоритм:
Если нажимается ToggleButton1, а ToggleButton2 была при этом нажата, то она должна отжаться, и наоборот.
Необходимо исключить одновременное нажатие кнопок.

Написал простой код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Private Sub ToggleButton1_Click()
   ToggleButton2.Value = False
End Sub

Private Sub ToggleButton2_Click()
  ToggleButton1.Value = False
End Sub



И вроде все работает, но выглядит немного странно.
Вместо того, чтобы просто отжаться, она отжимается, потом сама нажимается и отжимается еще раз.
Можно это как-то исключить?
Файл приложил.
Заранее спасибо.
...
Рейтинг: 0 / 0
Создание синхронно работающих кнопок
    #40125553
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А этот код тут не причем
Она так делает даже при простой потере фокуса
...
Рейтинг: 0 / 0
Создание синхронно работающих кнопок
    #40125622
ВладимирВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так они как-то странно работают.
Кнопка 1 нажата. Нажимаем кнопку2.
Первое нажатие отжимает кнопку1, а вторым уже нажимается и фиксируется кнопка 2.
Почему это не происходит одновременно?*
...
Рейтинг: 0 / 0
Создание синхронно работающих кнопок
    #40125636
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Dim IsChanging As Boolean

Private Sub ToggleButton1_Change()

 If IsChanging Then Exit Sub
 IsChanging = True
 ToggleButton2.Value = False
 IsChanging = False
 
End Sub

Private Sub ToggleButton2_Change()
  
 If IsChanging Then Exit Sub
 IsChanging = True
 ToggleButton1.Value = False
 IsChanging = False
 
End Sub
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Создание синхронно работающих кнопок
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (1): Анонимы (1)
Пользователи онлайн (12): Анонимы (11), Yandex Bot 4 мин.
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]