Код: Выделить всё
Public Function CheckIfUsed(ByRef Ti As Integer, ByRef Qi As Integer) As Boolean
' Ti - индекс темы, Qi - индекс вопроса
Qst = CopyArr(1).Theme(Ti).Question(Qi).QName
' Qst - название вопроса
' массивы объявлены через User-Defined Type в этом же модуле
If WorksheetFunction.CountIf(RList.Columns(1), "?. " & Qst) > 0 Then
' если вопрос уже есть на странице, то необходимо взять следующий вопрос в данной теме, если ни один вопрос в данной теме не подходит, надо взять следующую тему и проделать то же самое:
CheckIfUsed = True
Set QList = Worksheets("1")
' на этом листе хранятся вопросы в виде таблицы "тема-вопрос-сложность", с него происходит запись элементов в массив в основном коде
Set RList = Worksheets("2")
'на этот лист выводятся вопросы
tmpT = CopyArr(0).Theme(Ti).TName
NumQT = WorksheetFunction.CountIf(QList.Columns(1), tmpT)
' NumQT - число вопросов в теме; находится, как число строк на листе с одинаковыми темами
var = Qi
' переменной var присваиваем значение, при достижении которого надо будет выйти из цикла
Do
Do
Call ChooseNext(Qi, NumQT)
Qst = CopyArr(1).Theme(Ti).Question(Qi).QName
If WorksheetFunction.CountIf(RList.Columns(1), "?. " & Qst) = 0 Then
Exit Do
End If
Loop Until Qi = var
Call ChooseNext(Ti, NumT)
Qi = 0
Qst = CopyArr(1).Theme(Ti).Question(Qi).QName
Loop Until WorksheetFunction.CountIf(RList.Columns(1), "?. " & Qst) = 0
Else
CheckIfUsed = False
End If
End Function
Public Function ChooseNext(ByRef index As Integer, ByRef amount As Integer)
If index < amount Then
index = index + 1
Else
index = 1
End If
End Function
Код: Выделить всё
Do
Qst = CopyArr(1).Theme(Ti).Question(Qi).QName
Loop Until CheckIfUsed(Ti, Qi) = False
кто может подсказать, где ошибка?
заранее спасибо!