Макрос для флажка excel

 

ton bon

Пользователь

Сообщений: 31
Регистрация: 01.01.1970

Здравствуйте уважаемые гуру!

Есть элемент управления checkbox (или флажок) на листе. Как запустить макрос при изменении состояния этого элемента управления?

Большое спасибо!

 

смотря какой флажок
их 2
одному (флажок) назначается готовый макрос
у второго (CheckBox) по ПКМ есть пункт «Исходный текст»

Изменено: Александр Моторин28.01.2021 13:56:27

 

Mershik

Пользователь

Сообщений: 8277
Регистрация: 03.12.2015

#3

28.01.2021 14:15:33

ton bon,

Код
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
    'ваш макрос если установленая галочка
    MsgBox "Активировано"
Else
    'действие если не установленая галочка
End If
End Sub

http://scriptcoding.ru/2013/08/29/vba-checkbox/

Не бойтесь совершенства. Вам его не достичь.

 

ton bon

Пользователь

Сообщений: 31
Регистрация: 01.01.1970

Mershik, спасибо! Это должно быть вставлено в код листа?

И одно уточнение. Если макрос один и тот же, независимо от того, стоит галочка или нет, то можно как-нибудь упростить?

 

ton bon

Пользователь

Сообщений: 31
Регистрация: 01.01.1970

#5

28.01.2021 14:57:31

Цитата
ton bon написал:
Это должно быть вставлено в код листа?

Извините, спасибо, разобрался по Вашей ссылке. Просто в макрос флажка записываем Call действие! Одна строчка! Спасибо еще раз!

 

Mershik

Пользователь

Сообщений: 8277
Регистрация: 03.12.2015

#6

28.01.2021 14:58:20

ton bon,

Цитата
ton bon написал:
Это должно быть вставлено в код листа?

можете туда (только название должно соответствен checkbox)

Цитата
ton bon написал:
Если макрос один и тот же, независимо от того, стоит галочка или нет, то можно как-нибудь упростить?

не понял?  зачем тогда использовать checkbox сделайте кнопку которая и будет запускать макрос

Не бойтесь совершенства. Вам его не достичь.

Элемент управления пользовательской формы CheckBox для выбора или невыбора его пользователем и передачи результата в VBA Excel. Свойства «Флажка», примеры кода.

UserForm.CheckBox – это элемент управления пользовательской формы, предназначенный для передачи в код VBA информации о выборе или невыборе его пользователем и возвращающий одно из двух значений: False (галочки нет) или True (галочка установлена).

Элемент управления CheckBox на пользовательской форме

Элемент управления CheckBox состоит из флажка и надписи. В VBA Excel флажок имеет квадратную форму, надпись расположена справа от него. Надпись реагирует на нажатие мышью так же, как и флажок.

По тексту статьи значение слова «Флажок» в кавычках равно значению слова CheckBox, флажок без кавычек обозначает квадрат с галочкой или без нее.

Кроме состояний «выбран» или «не выбран», существует и третье состояние флажка: серая галочка на сером фоне. Получить такое состояние на пользовательской форме можно путем присвоения свойству CheckBox.Value значения Null.

Три состояния элемента управления CheckBox

Надписи флажков выведены с помощью следующего кода VBA Excel:

Private Sub UserForm_Initialize()

CheckBox1.Value = False

CheckBox1.Caption = «CheckBox1.Value = « _

& CheckBox1.Value

CheckBox2.Value = Null

CheckBox2.Caption = «CheckBox2.Value = « _

& CheckBox2.Value

CheckBox3.Value = True

CheckBox3.Caption = «CheckBox3.Value = « _

& CheckBox3.Value

End Sub

Интересно было посмотреть, какое значение отобразится в надписи элемента управления CheckBox2. Обратите внимание на то, что если строку CheckBox2.Caption = "CheckBox2.Value = " & CheckBox2.Value заменить на CheckBox2.Caption = CheckBox2.Value, будет сгенерирована ошибка, так как в VBA не существует текстового отображения значения Null.

Эксперименты показали, что отобразить «Флажок» в третьем состоянии можно также с помощью присвоения свойству CheckBox.Value значения «пустая строка».

Элемент управления CheckBox может использоваться на пользовательской форме для

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

Если требуется выбор только одной опции из группы предложенных, для этой цели в VBA Excel используется набор элементов управления OptionButton.

Свойства элемента «Флажок»

Свойство Описание
AutoSize Автоподбор размера «Флажка». True – размер автоматически подстраивается под длину набираемой строки. False – размер элемента управления определяется свойствами Width и Height.
ControlSource Ссылка на источник данных для свойства Value.
ControlTipText Текст всплывающей подсказки при наведении курсора на CheckBox.
Enabled Возможность взаимодействия пользователя с элементом управления. True – взаимодействие включено, False – отключено (цвет флажка и надписи становится серым).
Font Шрифт, начертание и размер текста надписи.
Height Высота элемента управления.
Left Расстояние от левого края внутренней границы пользовательской формы до левого края элемента управления.
Picture Добавление изображения вместо текста надписи или дополнительно к нему.
PicturePosition Выравнивание изображения и текста в поле надписи.
TabIndex Определяет позицию элемента управления в очереди на получение фокуса при табуляции, вызываемой нажатием клавиш «Tab», «Enter». Отсчет начинается с 0.
TextAlign* Выравнивание текста надписи: 1 (fmTextAlignLeft) – по левому краю, 2 (fmTextAlignCenter) – по центру, 3 (fmTextAlignRight) – по правому краю.
Top Расстояние от верхнего края внутренней границы пользовательской формы до верхнего края элемента управления.
TripleState Определяет, может ли пользователь делать выбор между двумя состояниями «Флажка» или между тремя, включая серую галочку на сером квадрате. True – доступны три состояния, False – доступны два состояния.
Value Значение «Флажка»: True – галочка установлена, False – галочка не установлена, Null – серая галочка на сером квадрате.
Visible Видимость элемента CheckBox. True – элемент отображается на пользовательской форме, False – скрыт.
Width Ширина элемента управления.
WordWrap Перенос текста надписи на новую строку при достижении границы ее поля. True – перенос включен, False – перенос выключен.

* При загруженной в поле надписи картинке свойство TextAlign не работает, следует использовать свойство PicturePosition.

Свойство по умолчанию для элемента CheckBox – Value, основное событие – Click.

В таблице перечислены только основные, часто используемые свойства «Флажка». Все доступные свойства отображены в окне Properties элемента управления CheckBox.

Примеры использования CheckBox

Пример 1
Отображение элемента управления CheckBox на пользовательской форме с параметрами, заданными в коде VBA Excel:

Private Sub UserForm_Initialize()

  With CheckBox1

    .Caption = «Нажмите на меня»

    .ControlSource = «A1»

    .Value = False

    .Left = 12

    .Top = 12

  End With

End Sub

Элемент управления CheckBox, привязанный к ячейке

Размещается данная процедура в модуле пользовательской формы.

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

Пример 2
Смена надписи «Флажка» в зависимости от его состояния:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

‘Устанавливаем первоначальные

‘значения свойств «Флажка»

Private Sub UserForm_Initialize()

  With CheckBox1

    .Caption = «Поставьте галочку»

    .Value = False

    .TripleState = False

  End With

End Sub

‘Меняем надпись «Флажка» при

‘смене параметра CheckBox1.Value

Private Sub CheckBox1_Change()

  If CheckBox1.Value Then

    CheckBox1.Caption = «Снимите галочку»

  Else

    CheckBox1.Caption = «Поставьте галочку»

  End If

End Sub

Пример 3
Скрытие и отображение, изменение доступности других элементов управления с помощью «Флажка».

Для реализации этого примера необходимо создать пользовательскую форму с четырьмя элементами управления: CheckBox1, TextBox1, TextBox2 и CommandButton1. А в модуле формы разместить следующий код:

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

‘Устанавливаем первоначальные

‘значения свойств элементов управления

Private Sub UserForm_Initialize()

  With CheckBox1

    .Caption = «Хочу сложить два числа»

    .Value = False

    .TripleState = False

  End With

  With TextBox1

    .Enabled = False

    .Text = «Слагаемое 1»

  End With

  With TextBox2

    .Enabled = False

    .Text = «Слагаемое 2»

  End With

  With CommandButton1

    .Caption = «Сложить»

    .Visible = False

  End With

End Sub

‘Меняем свойства других элементов

‘управления при смене состояния «Флажка»

Private Sub CheckBox1_Change()

  If CheckBox1.Value Then

    TextBox1.Enabled = True

    TextBox2.Enabled = True

    CommandButton1.Visible = True

  Else

    TextBox1.Enabled = False

    TextBox2.Enabled = False

    CommandButton1.Visible = False

  End If

End Sub

‘Складываем два числа

Private Sub CommandButton1_Click()

  If IsNumeric(TextBox1) And IsNumeric(TextBox2) Then

    MsgBox TextBox1 & » + « & TextBox2 & » = « _

    & CDbl(TextBox1) + CDbl(TextBox2)

  End If

End Sub

Форма открывается с недоступными для пользователя текстовыми полями и скрытой кнопкой «Сложить»:

После установки галочки на флажке текстовые поля становятся доступными для редактирования, и отображается кнопка «Сложить»:


Одним из первых вопросов, возникающих у начинающих пользователей программы «Эксель», является вопрос о том,  как в документе (таблице) создать кнопку (или другой активный элемент) запускающую написанный макрос.

Ведь пользоваться кнопкой для запуска макроса гораздо удобнее и практичнее, чем каждый раз заходить в меню разработчика и запускать его через список макросов (Alt+F8).

Рассмотрим пошагово, как назначить нужный макрос(последовательность действий) для активной кнопки.

Для начала следует создать саму кнопку:

Макро VBA Excel

Отложим запись макроса .

    Кликнув правой кнопкой мыши по активному объекту, Вы можете выбрать его формат – цвет, стиль и размер текста, заливку и так далее.изменить текст кнопки

    Так же можно поменять надпись на кнопке.измененная кнопка с макросом

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

    Для этого следует записать макрос во вкладке макроси присвоить уже готовый макрос кнопке кликнув по ней ПКМи выбрав «Назначить макрос…»

    или

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

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

      This tutorial goes beyond other simple check-mark tutorials. Here, I’ll show you 3 methods to insert a check-mark into Excel, including using Macros/VBA and a UDF, or User Defined Function.

      Sections:

      Basic Method to Insert a Check Mark into Excel

      VBA Method to Insert a Check Mark into Excel

      UDF that Inserts a Check Mark into Excel

      Notes

      Basic Method to Insert a Check Mark into Excel

      This is the most basic way you can enter a check-mark, but it’s kind of time consuming.

      1. Select the cell where you want the check-mark to go.
      2. Go to the Insert tab and click the Symbols button and then Symbol

      3. In the window that opens, go to the Symbols tab and select the Wingdings font from the Font: drop down at the top.
      4. Scroll down to the bottom and choose the check-mark symbol:
      5. Hit the Insert button once and then hit the Cancel button and you will now see the check-mark in Excel.

      Repeatedly Enter the Check Mark with Ease

      Now that you have a check-mark, you may want to enter it again and again. To do that, select the cell with the mark and hit Ctrl + C and then go to where you want it, select that cell, and hit Ctrl + V. Simple copy/paste.

      VBA Method to Insert a Check Mark into Excel

      To enter a check-mark using VBA, it’s actually very simple.

      1. Go to the VBA Editor window, Alt + F11, then to Insert > Module.
      2. Paste this code into your macro:

        ActiveCell.Value = ChrW(&H2713)

      3. The final macro, in its simplest form can look like this:
      4. Go back to Excel (Alt + F11) and select a cell, hit Alt + F8, select the macro, hit Run and you have another check-mark in Excel.

      UDF that Inserts a Check Mark into Excel

      This allows you to use a simple function that you create to add a check mark to Excel.

      1. Go to the VBA Editor window (Alt + F11) and add a module (Insert >Module) and then add this code:

        Function CheckMarkAdd()

           CheckMarkAdd = ChrW(&H2713)

         End Function

      2. Go back to Excel, Alt + F11, and go to the desired cell and type your new function =CheckMarkAdd()

      3. Hit Enter and that’s it!

      Using this method, you only ever have to remember the UDF that you created and, in less than a second, you can type it in, hit Enter, and you have your check-mark.

      This is my favorite method to use!

      Notes

      All of the above methods come in handy depending on the situation. My person favorite is the UDF method because I love UDFs and it’s just so simple to use.

      Download the sample workbook attached to this tutorial to get all of the code used here and try it yourself.

      Subscribe for Weekly Tutorials

      BONUS: subscribe now to download our Top Tutorials Ebook!

      Макрос для флажка

      Sr_Arthur

      Дата: Пятница, 09.01.2015, 12:13 |
      Сообщение № 1

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

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

      Сообщений: 9


      Репутация:

      0

      ±

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


      Excel 2003

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

      [moder]Нарушение п.п. 3
      Так так как просите МАКРОС, то и тема должна была быть в разделе VBA, а значит:
      Нарушение п.п. 5r
      ТС получает замечание, тему перенес в VBA[/moder]

       

      Ответить

      Nic70y

      Дата: Пятница, 09.01.2015, 12:17 |
      Сообщение № 2

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

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

      Сообщений: 8136


      Репутация:

      1999

      ±

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


      Excel 2010

      их же понарисовать надо…
      давайте файл-пример, что есть — что хотите получить. думаю типа ВПР потянет.


      ЮMoney 41001841029809

       

      Ответить

      Sr_Arthur

      Дата: Пятница, 09.01.2015, 14:29 |
      Сообщение № 3

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

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

      Сообщений: 9


      Репутация:

      0

      ±

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


      Excel 2003

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

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

      4877606.xlsx
      (18.6 Kb)

       

      Ответить

      Pelena

      Дата: Пятница, 09.01.2015, 14:38 |
      Сообщение № 4

      Группа: Админы

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

      Сообщений: 18797


      Репутация:

      4284

      ±

      Замечаний:
      ±


      Excel 2016 & Mac Excel


      «Черт возьми, Холмс! Но как??!!»
      Ю-money 41001765434816

       

      Ответить

      gling

      Дата: Пятница, 09.01.2015, 14:53 |
      Сообщение № 5

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

      Ранг: Старожил

      Сообщений: 2449


      Репутация:

      652

      ±

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


      2010

      Здравствуйте. Не понятно для чего эти заморочки. Создали копию листа—проставили количество — автофильтр не нулевых по графе стоимость и все. Хотите оставить лист для потомков, фильтр по нулевым—удалить строки —снять фильтр. Зачем эти галочки потом все равно количество проставлять.


      ЯД-41001506838083

       

      Ответить

      ShAM

      Дата: Пятница, 09.01.2015, 15:13 |
      Сообщение № 6

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

      Ранг: Старожил

      Сообщений: 1347


      Репутация:

      249

      ±

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


      Excel 2010

      Ну, если человек хочет. Правда формулами, без макросов.

       

      Ответить

      Sr_Arthur

      Дата: Пятница, 09.01.2015, 16:05 |
      Сообщение № 7

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

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

      Сообщений: 9


      Репутация:

      0

      ±

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


      Excel 2003

      спасибо вам добрый человек!!!

       

      Ответить

      Sr_Arthur

      Дата: Суббота, 10.01.2015, 18:43 |
      Сообщение № 8

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

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

      Сообщений: 9


      Репутация:

      0

      ±

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


      Excel 2003

      ShAM, прошу вашей помощи, целый день воюю с этими формулами и безрезультатно %) Я посмотрел вчера вашу формулу проанализировал как смог и решил добавить хотя бы 2 флажка в этот документ. Создал флажки, закрепил их за нужными ячейками, скопировал формулы и изменил A$7:A$13 на A$7:A$15 и G$7:G$13 на G$7:G$15, но это ничего не дало :( объясните пожалуйста в чем моя ошибка??? и если вам не трудно, посмотрите пожалуйста прикрепленный документ и напишите пример одной строчки, а дальше я как нибудь додумаюсь сам. Я изменил структуру документа (в документе 8 листов, из них 7 листов будут состоять из одинаковых таблиц, а 8-ой итоговый, в котором будут собираться выбранные из таблиц материалы)

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

      2650329.xlsx
      (18.4 Kb)

       

      Ответить

      Sr_Arthur

      Дата: Суббота, 17.01.2015, 14:27 |
      Сообщение № 9

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

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

      Сообщений: 9


      Репутация:

      0

      ±

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


      Excel 2003

      Наконец то сегодня я смог создать мини таблицу с флажочками и все у меня работало))) Выражаю огромную благодарность ShAM за его пример, я долго экспериментировал и анализировал и все получилось. Однако когда я начал применять свои новые навыки в своей большой рабочей таблице, что то пошло не так %) , друзья посмотрите мою книгу и подскажите пожалуйста где я допустил ошибку и объясните пожалуйста какую роль выполняет это выражение 7^7 в функции ЕСЛИ

       

      Ответить

      Sr_Arthur

      Дата: Суббота, 17.01.2015, 14:29 |
      Сообщение № 10

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

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

      Сообщений: 9


      Репутация:

      0

      ±

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


      Excel 2003

      книгу закинул в архив, а то она весит больше 100кб

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

      0851342.rar
      (40.3 Kb)

       

      Ответить

      RAN

      Дата: Суббота, 17.01.2015, 17:36 |
      Сообщение № 11

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

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

      Сообщений: 5645

      Так надо

      Код

      =ЕСЛИОШИБКА(ИНДЕКС(Лист1!B$2:B$30;НАИМЕНЬШИЙ(ЕСЛИ(Лист1!A$2:A$30=(1=1);СТРОКА(A$1:A$29);7^7);СТРОКА(A1)));»»)

      Не нравится 7^7, можно 9^9. :) Вам, правда, и 1000 хватит.
      Это всего лишь число, больше, чем позиций в списке.


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

       

      Ответить

      Sr_Arthur

      Дата: Суббота, 17.01.2015, 18:02 |
      Сообщение № 12

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

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

      Сообщений: 9


      Репутация:

      0

      ±

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


      Excel 2003

      RAN, еще вопросик если можно :) вы наверно обратили внимание что в этой книге много листов, а если быть точным то 8, первые семь предназначены для списков материалов, а 8 итоговой куда и будут попадать все выбранные материалы, как я понимаю для каждого листа должна быть одна такая формула и потом все эти формулы объединяются в одну? или можно как нибудь проще поступить?

      p.s. кстати так и не понял почему массив записан в столбец А, а данные выходят в стобце B? %)

       

      Ответить

      RAN

      Дата: Суббота, 17.01.2015, 18:15 |
      Сообщение № 13

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

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

      Сообщений: 5645

      Код

      СТРОКА(A1)=СТРОКА(B1)=СТРОКА(C1)=СТРОКА(D1) = 1

      :)

      Писать формулы — не ко мне.


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

       

      Ответить

      Sr_Arthur

      Дата: Суббота, 17.01.2015, 18:18 |
      Сообщение № 14

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

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

      Сообщений: 9


      Репутация:

      0

      ±

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


      Excel 2003

      RAN, огромнейщее вам спасибо!!! :)

       

      Ответить

      Wasilich

      Дата: Воскресенье, 18.01.2015, 10:11 |
      Сообщение № 15

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

      Ранг: Старожил

      Сообщений: 1232


      Репутация:

      326

      ±

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


      2003

      их же понарисовать надо…

      А можно и не рисовать. :)

       

      Ответить

      Sr_Arthur

      Дата: Воскресенье, 18.01.2015, 18:15 |
      Сообщение № 16

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

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

      Сообщений: 9


      Репутация:

      0

      ±

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


      Excel 2003

      Друзья подскажите пожалуйста можно ли так указать диапазон листов?

      =ЕСЛИОШИБКА(ИНДЕКС(Лист1:Лист7!

       

      Ответить

      Использование элементов управления Checkbox для скрытия и отображения строк

      В прикреплённом файле — 3 варианта реализации:

      • с использованием CheckBox с панели инструментов «Элементы управления»
      • с использованием CheckBox с панели инструментов «Формы»
      • без использования Checkbox — галочки (отметки) ставятся макросом
        (с использованием шрифта Marlett)

      Для каждого из вариантов использованы свои макросы, скрывающие и отображающие строки
      (в первых двух вариантах требуется ещё и скрывать сами чекбоксы)

      В третьем варианте для скрытия строк применён автофильтр.

      • 33061 просмотр

      Не получается применить макрос? Не удаётся изменить код под свои нужды?

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

      The code below is meant to allow only the authoriser (network name «JSMITH») to tick my checkbox so that she confirms she’s happy with the report to be sent out (multiple report users but only one authoriser). But I keep getting an error «Object required». What am I doing wrong in the code below? thanks

      Private Sub CheckBox1_Click()
      
          If Environ("username") <> "JSMITH" Then
              CheckBox1.Value = False
          End If
      
      End Sub
      

      pintxo's user avatar

      pintxo

      2,06614 silver badges27 bronze badges

      asked Jan 15, 2017 at 21:00

      Elena's user avatar

      3

      I think what you are after is the following code:

      Sub CheckBox1_Click()
          If ActiveSheet.Shapes("Check Box 1").ControlFormat.Value = 1 Then
              If Environ("username") = "JSMITH" or Environ("username") = "DTailor" Then
              'Do nothing
              Else
              'Uncheck because user not matching
              ActiveSheet.Shapes("Check Box 1").ControlFormat.Value = 0
              MsgBox ("You are not authorized to tick this box.")
              End If
          End If
      
      End Sub
      

      For an ActiveX checkbox I would use the following code:

      Sub CheckBox1_Click()
          If ActiveSheet.OLEObjects("CheckBox1").Object.Enabled = True Then
              If Environ("username") = "JSMITH" or Environ("username") = "DTailor" Then
              'Do nothing
              Else
              'Uncheck because user not matching
              ActiveSheet.OLEObjects("CheckBox1").Object.Enabled = False
              MsgBox ("You are not authorized to tick this box.")
              End If
          End If
      
      End Sub
      

      answered Jan 16, 2017 at 0:34

      VBA Pete's user avatar

      VBA PeteVBA Pete

      2,6462 gold badges23 silver badges39 bronze badges

      8

      Элемент управления CheckBox

      Флажки (пользователи часто называют их “галками” или “птичками”) и кнопки с фиксацией используются для выбора невзаимоисключающих вариантов (если этих вариантов немного).

       

      рис . 1.1 Элемент управления Checkbox на панели ToolBox

      рис. 1.2 Элемент управления Checkbox на форме

      рис. 1.3 Пример элемента управления Checkbox на форме

      Флажки удобны при составлении опросов, например, из десяти цветов нужно отметить те, которые больше всего нравятся. Собственно, в этой статье мы и попытаемся сделать своеобразный опрос, но пока, давайте рассмотрим основные свойства класса CheckBox:

      Name – имя объекта

      Caption – определяет надпись, которая будет находится возле галочки справа.

      TripleState – свойство позволяет определить третье состояние флажка. Как упоминалось выше, компонент vba CheckBox может принимать два значения: галочка установлена (true), галочка снята (false), но можно задать и третье состояние (Null) – в этом случае объект будет серого цвета и будет недоступен. Если это свойство содержит значение false – будут поддерживаться только два состояния, если true – все три.

      Value – данное свойство позволяет получить состояние выбора (true, false или Null).

      Событие Change класса CheckBox происходит при изменении состояния флажка.

      И так, цель задания: добавить в проект форму, на ней разместить 12 флажков, разделенных на 4 группы по 3 штуки, Например,

      • Телефон: Nokia, Samsung,      Siemens
      • Девушка: рыжая, светлая,      темная (для примера)
      • Ноутбук: Asus, Acer, Lenovo
      • Транспорт: велосипед,      автомобиль, самокат

      Ниже приведен пример формы:

      Справа добавлен компонент ListBox – как только мы будем ставить галочку для vba CheckBox, элемент сразу будет добавляться в список, плюс, элемент управлении Флажок сразу будет становится недоступным после выбора (свойство Enabled примет значение False). Еще на форме (UserForm) нам понадобится кнопка, которая будет очищать список, и будет делать доступными все флажки.

      В коде для формы нужно добавить следующие процедуры:

      Private Sub CheckBox1_Change()

      If CheckBox1.Value = True Then

      ListBox1.AddItem CheckBox1.Caption

      CheckBox1.Enabled = False

      End If

      End Sub

      Private Sub CheckBox2_Change()

      If CheckBox2.Value = True Then

      ListBox1.AddItem CheckBox2.Caption

      CheckBox2.Enabled = False

      End If

      End Sub

      Private Sub CheckBox3_Change()

      If CheckBox3.Value = True Then

      ListBox1.AddItem CheckBox3.Caption

      CheckBox3.Enabled = False

      End If

      End Sub

      Private Sub CheckBox4_Change()

      If CheckBox4.Value = True Then

      ListBox1.AddItem CheckBox4.Caption

      CheckBox4.Enabled = False

      End If

      End Sub

      Private Sub CheckBox5_Change()

      If CheckBox5.Value = True Then

      ListBox1.AddItem CheckBox5.Caption

      CheckBox5.Enabled = False

      End If

      End Sub

      Private Sub CheckBox6_Change()

      If CheckBox6.Value = True Then

      ListBox1.AddItem CheckBox6.Caption

      CheckBox6.Enabled = False

      End If

      End Sub

      Private Sub CheckBox7_Change()

      If CheckBox7.Value = True Then

      ListBox1.AddItem CheckBox7.Caption

      CheckBox7.Enabled = False

      End If

      End Sub

      Private Sub CheckBox8_Change()

      If CheckBox8.Value = True Then

      ListBox1.AddItem CheckBox8.Caption

      CheckBox8.Enabled = False

      End If

      End Sub

      Private Sub CheckBox9_Change()

      If CheckBox9.Value = True Then

      ListBox1.AddItem CheckBox9.Caption

      CheckBox9.Enabled = False

      End If

      End Sub

      Private Sub CheckBox10_Change()

      If CheckBox10.Value = True Then

      ListBox1.AddItem CheckBox10.Caption

      CheckBox10.Enabled = False

      End If

      End Sub

      Private Sub CheckBox11_Change()

      If CheckBox11.Value = True Then

      ListBox1.AddItem CheckBox11.Caption

      CheckBox11.Enabled = False

      End If

      End Sub

      Private Sub CheckBox12_Change()

      CheckBox12.Value = True Then

      ListBox1.AddItem CheckBox12.Caption

      CheckBox12.Enabled = False

      End If

      End Sub

      Private Sub CommandButton1_Click()

      CheckBox1.Enabled = True     CheckBox2.Enabled = True     CheckBox3.Enabled = True     CheckBox4.Enabled = True     CheckBox5.Enabled = True     CheckBox6.Enabled = True     CheckBox7.Enabled = True     CheckBox8.Enabled = True     CheckBox9.Enabled = True     CheckBox10.Enabled = True     CheckBox11.Enabled = True     CheckBox12.Enabled = True     ListBox1.Clear

      End Sub

      Процедуры от CheckBox1_Change до CheckBox12_Change носят практически один и тот же характер – идет обработка события Change. Если состояние флажка ровно true (вы поставили птичку), то в список ListBox1 с помощью метода AddItem добавляется значение, хранимое в свойстве Caption (надпись рядом с птичкой). Далее происходит присваивание значения False свойству Enabled – делаем объект CheckBox недоступным.

      Процедура CommandButton1_Click отвечает за обработку клика по кнопке. Видим, что для каждого флажка свойство Enabled принимает значение True, то есть, он становится доступным. Метод Cleare – полностью очищает список ListBox1.

      Понравилась статья? Поделить с друзьями:
    • Макрос для условного форматирования в excel
    • Макрос для удаления файла excel
    • Макрос для удаления строк по значению в excel
    • Макрос для удаления строк в excel по условию макрос
    • Макрос для удаления стилей в excel