Для генерации тестовых заданий нужно макросом во всех ячейках листа, на которые наложено ограничение ввода в виде Списка (Данные-Проверка данных), выбрать случайным образом значения из соответствующих списков.
Заранее благодарю!
P.S. Готовый макрос не обязателен, дайте направление, куда копать 1) признак такой ячейки, 2) диапазон Списка ... Дальше уж я с Божьей помощью сам
Коллеги, наскоком не разобрался, помогайте!
Для генерации тестовых заданий нужно макросом во всех ячейках листа, на которые наложено ограничение ввода в виде Списка (Данные-Проверка данных), выбрать случайным образом значения из соответствующих списков.
Заранее благодарю!
P.S. Готовый макрос не обязателен, дайте направление, куда копать 1) признак такой ячейки, 2) диапазон Списка ... Дальше уж я с Божьей помощью сам abtextime
Сообщение отредактировал abtextime - Среда, 18.07.2018, 14:57
Dim d_ As Range, s_ As Range For Each d_ In Cells(1).SpecialCells(xlCellTypeAllValidation)'это F5 - Выделить - Проверка данных Set s_ = Range(d_.Validation.Formula1)' это диапазон d_ = s_(Int(Rnd * s_.Count + 1)) Next d_
*Добавлено 2 Там проверки всякие еще нужно - на то, что тип данных "список", на то, что этот список из диапазона, на его корректность, ...
Так нужно? [vba]
Код
Dim d_ As Range, s_ As Range For Each d_ In Cells(1).SpecialCells(xlCellTypeAllValidation)'это F5 - Выделить - Проверка данных Set s_ = Range(d_.Validation.Formula1)' это диапазон d_ = s_(Int(Rnd * s_.Count + 1)) Next d_
Sub q() Dim ar, i& ar = Range(ActiveCell.Validation.Formula1).Value Randomize i = Int((UBound(ar) - LBound(ar) + 1) * Rnd + LBound(ar)) ActiveCell.Value = ar(i, 1) End Sub
[/vba]
[vba]
Код
Sub q() Dim ar, i& ar = Range(ActiveCell.Validation.Formula1).Value Randomize i = Int((UBound(ar) - LBound(ar) + 1) * Rnd + LBound(ar)) ActiveCell.Value = ar(i, 1) End Sub
P.S. Только Вы для активной ячейки выбор сделали, а Александр - точнее - цикл по всему ячейкам такого типа. Но, конечно же, завернуть ваш Sub в цикл не составляет труда. Благодарю.
RAN, спасибо большое!
Еще один кусочек VBA стал понятным
P.S. Только Вы для активной ячейки выбор сделали, а Александр - точнее - цикл по всему ячейкам такого типа. Но, конечно же, завернуть ваш Sub в цикл не составляет труда. Благодарю.abtextime
Сообщение отредактировал abtextime - Среда, 18.07.2018, 15:14