2014-06-26 8 views
1

Я только начинаю изучать Excel VBA, и у меня возникают проблемы с конкретным упражнением. Учитывая столбец из 20 случайно генерируемых целых чисел от 0 до 100 в столбце, я хочу написать программу VBA, которая пишет в столбце рядом с ним «pass», если число больше или равно 50 и «fail», если число меньше 50.Looped If/Then Functions in Excel VBA

В моем подходе используется функция циклирования от i = 1 до 20 с оператором If для каждой ячейки (i, 1), которая записывала бы пропуск или отказ в (i, 2).

Sub CommandButton1_Click() 
'Declare Variables 
Dim score As Integer, result As String, i As Integer 

'Setup Loop function, If/Then function 
For i = 1 To 20 
    score = Sheet1.Cells(i, 1).Value 
    If score >= 60 Then result = "pass" 
    Sheet1.Cells(i, 2).Value = result 
Next i 

End If 
End Sub 

Могу ли я получить представление о том, что я делаю неправильно?

Заранее благодарен!

+0

Я не уверен, что ошибка вы получаете, но это выглядит, как вам нужно сбросьте значение результата для каждой итерации цикла. Может быть, объявить и инициализировать результат внутри цикла. – PerpetualStudent

ответ

1

попробовать что-то вроде этого ...

Sub CommandButton1_Click() 
'Declare Variables 
Dim score As Integer, result As String, i As Integer 

'Setup Loop function, If/Then function 
For i = 1 To 20 
    score = Sheets("Sheet1").Cells(i, 1).Value 
    If score >= 60 Then 
     result = "pass" 
    Else 
     result = "fail" 
    End If 
    Sheets("Sheet1").Cells(i, 2).Value = result 

Next i 

End Sub 
  1. Вам необходимо правильно указать ваш рабочий лист, работающий с как Sheets("Sheet1").Cells(...

  2. Добавить условие else, чтобы установить результат с ошибкой, когда значение меньше 60. В противном случае оно не изменяется после первого «прохода»

  3. Перемещение End, если внутри для цикла, сразу после проверки оценка ...

0

коррекции с наименьшим количеством изменений заключается в следующем:

Sub CommandButton1_Click() 
'Declare Variables 
Dim score As Integer, result As String, i As Integer 

'Setup Loop function, If/Then function 
For i = 1 To 20 
    score = Sheet1.Cells(i, 1).Value 
    If score >= 60 Then 
     result = "pass" 
     Sheet1.Cells(i, 2).Value = result 
    End If 
Next i 

End If 
End Sub 

Имейте в виду, что в VBA, переменные являются глобальными по отношению к функции; не локально к петле. Как упоминалось, можно также написал что-то вроде:

result = "" 
if score >= 60 then result = "pass" 
sheet1.... 
+0

большое спасибо! – user3777202