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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2013, 16:10   #1
mozart2012
Пользователь
 
Регистрация: 08.11.2012
Сообщений: 15
По умолчанию VBA. Циклы

Процедура, подсчитывающая правильные ответы. Она сравнивает правильный ответ, помеченный единицей в 3 столбце с выбранными пользователем ответами (4 столбец). Когда единички совпадают, процедура засчитывает правильный ответ и ставит в 5 столбце единичку. Плохо знаю VBA, помогите найти ошибку, макрос выполняется только для первого вопроса, хотя должен пройтись аж до 147 строки
Код:
Sub Coincidence()
Dim QwNum As Integer
Dim num As Integer
Dim RwCnt As Integer
RwCnt = 2

 Do Until Sheets("Chapter02").Cells(RwCnt, 3) = ""
 If Sheets("Chapter02").Cells(RwCnt, 3) = 1 And Sheets("Chapter02").Cells(RwCnt, 4) = 1 Then
   Sheets("Chapter02").Cells(RwCnt, 5).Value = 1
   num = num + 1
 Else
   Sheets("Chapter02").Cells(RwCnt, 5).Value = 0
  End If
  RwCnt = RwCnt + 1
Loop
Sheets("Chapter02").Cells(148, 3).Value = Str(num)
End Sub
Изображения
Тип файла: jpg Безымянный.jpg (36.0 Кб, 37 просмотров)

Последний раз редактировалось mozart2012; 17.02.2013 в 16:11. Причина: неточность вопроса
mozart2012 вне форума Ответить с цитированием
Старый 18.02.2013, 09:21   #2
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Код:
 Do Until Sheets("Chapter02").Cells(RwCnt, 3) = ""
У вас цикл выполняется до первого пробела в столбце 3. естественно, что цикл работает не до конца.

попробуйте так:
Код:
  For I = 1 To Range("C" & Rows.Count).End(xlUp).Row
    If Not IsEmpty(Cells(I, 3)) Then
      Cells(I, 5) = -(Cells(I, 4) = Cells(I, 3))
    End If
  Next I
или можно в одну строку:

Код:
Range("C1:C" & Range("C" & Rows.Count).End(xlUp).Row).SpecialCells(xlCellTypeConstants).Offset(, 2).FormulaR1C1 = "=--(RC[-1] = RC[-2])"
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
циклы vba Othergirl Microsoft Office Excel 3 25.10.2011 12:48
VBA for MsExcel. Циклы и работа с хост-приложением funduk Помощь студентам 1 27.12.2010 07:17
как в VBA создавать циклы Lyudm Microsoft Office Excel 4 12.11.2010 09:32
vba - циклы ksenechka Помощь студентам 2 15.05.2010 22:42
циклы в VBA POSH Помощь студентам 0 23.04.2010 16:21