Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2015, 16:33   #1
jirtreck
Пользователь
 
Регистрация: 29.06.2011
Сообщений: 56
По умолчанию Цикл For next делает только одну итерацию

Нужно, чтобы макрос задавал вопросы и давал баллы в зависимости от ответов ( Пока написано только решение, вывода в ячейки с оформлением нет )



Если 0, то спрашивает да-нет, а если 1, то надо заполнить пропуск. Затем макрос сверяется с нужным ответом и в зависимости от этого начисляет баллы из Е. В G1 указано количество вопросов задаваемое пользователем самостоятельно.

При запуске макроса работает только одна итерация цикла, задает самый первый вопрос, и он завершается.
Как это исправить?

Код:
Sub Тестирование()
N = Worksheets("Лист2").Range("A1").Offset(1, 6).Value

For i = 0 To N


If Range("A1").Offset(i, 0).Value = 0 Then
If Range("A1").Offset(i, 3).Value = "Нет" Then a = vbNo
If Range("A1").Offset(i, 3).Value = "Да" Then a = vbYes
MsgBox (Worksheets("Лист2").Range("A1").Offset(i, 1).Value)
ans = MsgBox(Worksheets("Лист2").Range("A1").Offset(i, 2).Value, vbYesNo + vbQuestion)
If ans = a Then
ball = ball + Worksheets("Лист2").Range("A1").Offset(i, 4).Value
End If
End If

If Range("A1").Offset(i, 0).Value = 1 Then
a = Range("A1").Offset(i, 3).Value
MsgBox (Range("A1").Offset(i, 1).Value)
ans = InputBox(Range("A1").Offset(i, 2).Value)
If ans = a Then
ball = ball + Worksheets("Лист2").Range("A1").Offset(i, 4)
End If
End If

Next i



End Sub
jirtreck вне форума Ответить с цитированием
Старый 30.10.2015, 16:41   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А ты проверял что возвращает Worksheets("Лист2").Range("A1").Off set(1, 6).Value?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.10.2015, 16:53   #3
jirtreck
Пользователь
 
Регистрация: 29.06.2011
Сообщений: 56
По умолчанию

Там должно быть три, если я правильно понимаю работу offset
jirtreck вне форума Ответить с цитированием
Старый 30.10.2015, 16:54   #4
jirtreck
Пользователь
 
Регистрация: 29.06.2011
Сообщений: 56
По умолчанию

Дошло, тупо получилось, сейчас исправлю и посмотрю
jirtreck вне форума Ответить с цитированием
Старый 30.10.2015, 16:56   #5
jirtreck
Пользователь
 
Регистрация: 29.06.2011
Сообщений: 56
По умолчанию

Да, спутал i и 1 когда писал код, сейчас все нормально, благодарю за помощь!
jirtreck вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ExtractIcon видит только одну иконку Сидоров Win Api 6 15.10.2014 14:55
Цикл выводит только одну запись из базы romanet PHP 13 08.07.2011 13:40
Выделить только одну цифру dx2001 Microsoft Office Excel 6 30.05.2011 17:42
Возвращает только одну запись.... Cartman18 БД в Delphi 5 15.09.2010 16:53
Добавить только одну строчку, а не все hozey Общие вопросы Delphi 3 14.05.2010 18:12