Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
77brayan77
0 / 0 / 0
Регистрация: 30.12.2014
Сообщений: 57
1

Случайный выбор CheckBox

05.01.2015, 11:17. Просмотров 1164. Ответов 27
Метки нет (Все метки)

Здравствуйте. Снова нужна помощь) Есть форма пациента. При выделении CheckBox "Пониженное АД" и любых двух других CheckBox в ячейку должно писаться "Артериальная гипотония". Как заставить его считывать именно любые CheckBox? Пробывал через Randomize, но видимо моих знаний недостаточно, чтобы правильно его применить. Все файлы приложил
0
Миниатюры
Случайный выбор CheckBox  
Вложения
Тип файла: 7z Новая папка.7z (73.2 Кб, 8 просмотров)
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.01.2015, 11:17
Ответы с готовыми решениями:

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

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

Как проверить, в каком из Checkbox пользователь сделал выбор?
проблема вот в чем есть n-ое количество checkbox при виборе каждого дожна быть операция.... как...

Перебор CheckBox для создания новых листов с названием из CheckBox.Caption
Привет всем! Для каждого CheckBox получается сделать. У меня их больше 20. Возможно ли...

Как одновременно поменять свойство value у checkbox с true на false для всех checkbox-ов, находящихся на одном листе?
Всем добрый день! Подскажите, пожалуйста, как одновременно поменять свойство value у checkbox с...

27
Alex77755
10985 / 3442 / 592
Регистрация: 13.02.2009
Сообщений: 10,223
05.01.2015, 13:14 2
архив не открывается. На словах: в событие клик CheckBox "Пониженное АД" вписать код проверки состояния и подсчёта флагов.
При чём тут Randomize если по условию двух любых! Проверяешь все и считаешь.
Насчитал 2 флага - дальше можно не считать - выход из цикла
0
Night Ranger
Заблокирован
05.01.2015, 13:21 3
Узнаю файл в архиве

Visual Basic
1
2
3
4
5
    Randomize
    Do
       i = Int(Rnd * Me.Controls.Count)
    Loop While TypeName(Me.Controls(i)) <> "CheckBox"
    MsgBox "Выбранн: " & Me.Controls(i).Caption
Добавлено через 3 минуты
В моём примере
производиться случайный выбор из коллекции контролов,
если вдруг индекс указывает на текст или кнопку, то цикл повториться
и заново выберет новый контрол, это примитивный пример, можно сделать продвинутей
1
Alex77755
10985 / 3442 / 592
Регистрация: 13.02.2009
Сообщений: 10,223
05.01.2015, 13:28 4
Если перебирать случайно и считать до 2, то надо и запоминать выбранный чекбокс.
И наче один может выпать дважды
0
05.01.2015, 13:28
77brayan77
0 / 0 / 0
Регистрация: 30.12.2014
Сообщений: 57
05.01.2015, 13:31  [ТС] 5
Alex77755, Файл без архива. Хотелось бы увидеть на конкретном примере. Только начал работать с VBA и для меня это темный лес
0
Вложения
Тип файла: xls Xl0000001.xls (72.5 Кб, 2 просмотров)
Alex77755
10985 / 3442 / 592
Регистрация: 13.02.2009
Сообщений: 10,223
05.01.2015, 13:38 6
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Private Sub CheckBox4_Click()
    Dim i, K
    If CheckBox4 Then
        For i = 1 To 8
            If i <> 4 Then
                If Controls("CheckBox" & i) Then K = K + 1
                If K >= 2 Then MsgBox K, 64, "": Exit Sub
            End If
        Next i
    End If
End Sub
0
Night Ranger
Заблокирован
05.01.2015, 13:43 7
Вот чтобы нельзя было выбрать 2 раза одно и то-же !!!
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
    Set co = New Collection
    For Each v In Me.Controls
        i = i + 1
        If TypeName(v) = "CheckBox" Then co.Add v, "chbx" & i
    Next
    Randomize
    While co.Count
        i = Int(Rnd * co.Count) + 1
        Set v = co(i)
        MsgBox "Выбран: " & v.Caption
        co.Remove (i)
    Wend
    MsgBox "Перебрали все !"
1
Alex77755
10985 / 3442 / 592
Регистрация: 13.02.2009
Сообщений: 10,223
05.01.2015, 13:44 8
тэги забыл
1
Night Ranger
Заблокирован
05.01.2015, 13:48 9
а я забыл прокоментировать
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub CommandButton1_Click()
 
    Set co = New Collection
    For Each v In Me.Controls 'Запомнить коллекцию
        i = i + 1
        If TypeName(v) = "CheckBox" Then co.Add v, "chbx" & i
    Next
    Randomize
    While co.Count 'Повторять пока в коллекции остался хотябы один !!!!!
        i = Int(Rnd * co.Count) + 1
        Set v = co(i)
        MsgBox "Выбран: " & v.Caption
        co.Remove (i) 'Удалить из коллекции
    Wend
    MsgBox "Перебрали все !"
1
77brayan77
0 / 0 / 0
Регистрация: 30.12.2014
Сообщений: 57
05.01.2015, 13:50  [ТС] 10
Alex77755, А если не через randomize, вы были правы, нужно именно 2 любых, а не случайных

Добавлено через 44 секунды
Night Ranger, Продолжаю ваш нелегкий труд) спасибо за дальнейшее участие)
0
Night Ranger
Заблокирован
05.01.2015, 13:58 11
дык.. возми да воткни этот пример, куданибудь, я ить так и понял задачу,
в теме чёрным по белому написанно Случайны выбор CheckBox
кто скажет что я чтото не то сделал ?

Добавлено через 3 минуты
Если надо только из отмеченных выбрать, вот:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub CommandButton1_Click()
 
    Set co = New Collection
    For Each v In Me.Controls 'Запомнить коллекцию
        i = i + 1
        If TypeName(v) = "CheckBox" Then If v.Value Then co.Add v, "chbx" & i
    Next
    Randomize
    While co.Count 'Повторять пока в коллекции остался хотябы один !!!!!
        i = Int(Rnd * co.Count) + 1
        Set v = co(i)
        MsgBox "Выбран: " & v.Caption
        co.Remove (i) 'Удалить из коллекции
    Wend
    MsgBox "Перебрали все !"
а дальше сам..
1
77brayan77
0 / 0 / 0
Регистрация: 30.12.2014
Сообщений: 57
05.01.2015, 13:59  [ТС] 12
Night Ranger, Не поспоришь, сам не знал чего хотел)
0
Alex77755
10985 / 3442 / 592
Регистрация: 13.02.2009
Сообщений: 10,223
05.01.2015, 14:37 13
Зачем два цикла? Коллекция? Зачем перебирать все контролы?
Избыточны телодвижения!
Проверять конкретно CheckBox-ы и считать!
Насчитали 2 Всё! Условие достаточно! Действие и выход из процедуры!
1
Night Ranger
Заблокирован
05.01.2015, 14:55 14
Цитата Сообщение от Alex77755 Посмотреть сообщение
If Controls("CheckBox" & i)
Ну вот смотрите, у вас написанно такое имя, а вдруг у него имя другое будет
и тип всёравно CheckBox, поэтому я и перебираю все объекты с похожим типом
можно из двух выбрать из 3-х из 4-х хоть из скольки

Добавлено через 11 минут
Предлагаю автору еще раз уточнить задачу,
что он нажимает и что должно выползти..
1
77brayan77
0 / 0 / 0
Регистрация: 30.12.2014
Сообщений: 57
05.01.2015, 15:03  [ТС] 15
Задача такова: при выборе CheckBox "Пониженное АД" и любых двух других CheckBox, в ячейку столбца Е должно выводиться "Артериальная гипотония", и так для каждого пациента, у которых будет выполняться данное условие.
0
Alex77755
10985 / 3442 / 592
Регистрация: 13.02.2009
Сообщений: 10,223
05.01.2015, 15:08 16
а вдруг у него имя другое будет
Но уже есть конкретный проект! Зачем гадать?
Вопрос же стоит конкретный! зачем усложнять простой вопрос.
Единственное, что здесь может быть, так это при каких событиях проверять!
Т.е. только ли при изменении "Пониженное АД", то ли при изменении любых чекбоксов при установленном "Пониженное АД".
1
Night Ranger
Заблокирован
05.01.2015, 15:10 17
Цитата Сообщение от Alex77755 Посмотреть сообщение
Единственное, что здесь может быть, так это при каких событиях проверять!
Т.е. только ли при изменении "Пониженное АД", то ли при изменении любых чекбоксов при установленном "Пониженное АД".
я тоже этих уточнений ожидал
1
Alex77755
10985 / 3442 / 592
Регистрация: 13.02.2009
Сообщений: 10,223
05.01.2015, 15:13 18
И даже если перебирать все контролы, то зачем пихать их в коллекцию и потом снова перебирать?
Ведь всего лишь достаточно иметь 2 любых выбранных! Единственное: не учитывать сам "Пониженное АД" и не делать перебора если сам "Пониженное АД" не выбран.
1
77brayan77
0 / 0 / 0
Регистрация: 30.12.2014
Сообщений: 57
05.01.2015, 15:14  [ТС] 19
Alex77755, Только если включен Checkbox "Пониженное АД" и два любых других, то ячейку столбца Е должно выводиться "Артериальная гипотония", и так для каждого пациента, у которых будет выполняться данное условие
0
Night Ranger
Заблокирован
05.01.2015, 15:24 20
77brayan77, смотри
в твоём файле есть такое

Visual Basic
1
If CheckBox4.Value = True And CheckBox3.Value = True Then cells(i, 5) = "Артериальная гипотония"
как мне понимается, нужно всегда для каждого пациента выводить "Артериальная гипотония" в колонке E, при условии что CheckBox4=yes и любой другой тоже yes правильно ?
1
05.01.2015, 15:24
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.01.2015, 15:24

Checkbox на Userform. Как создать мультивыбор Checkbox
Добрый день! Прошу помощи реализовать код для возможности мультивыбора Checkbox. Каждый Checkbox...

Подскажите, как сделать случайный выбор и случайный выбор ответов?
подскажите как сделать случайный выбор вопросов и случайны выбор ответов var questions = , ,...

Случайный выбор
Собственно, задача. Имеется сайт на css del Как сделать, чтобы фото на заднем плане...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.