2016-03-08 4 views
0

Я пытаюсь подсчитать количество строк, содержащих определенное значение. Существует три строки, и я вычисляю общее значение каждого из них и помещаю в переменную, чтобы позже в сценарии печати на экран. Я только подсчет строк в пределах определенного диапазона ячеек, который является первой частью коды - искать первое и последнее вхождение, так что я могу использовать их в качестве номеров строкподсчет количества строк с помощью vba

Dim mediumStartRow As Integer 
Dim mediumEndRow As Integer 
Dim majVarCount As Integer 
Dim minVarCount As Integer 
Dim onTrackCount As Integer 

'Find the range of cells for Medium Projects, just gives the row number of the first occurnace and the last occurnace 
mediumStartRow = Range("H:H").Find(what:="Medium Project", after:=Range("H21")).Row 
mediumEndRow = Range("H:H").Find(what:="Medium Project", after:=Range("H21"), searchdirection:=xlPrevious).Row 
MsgBox "First and Last Row for Medium Projects: " & mediumStartRow & mediumEndRow 

    majVarCount = 0 
    minVarCount = 0 
    onTrackCount = 0 

    With Range("AS:AU" & mediumStartRow) 
     If Value = "Major Variance" Then 
      majVarCount = Rows.Count 
      Else 
      If Value = "Minor Variance" Then 
       minVarCount = Rows.Count 
       Else 
       If Value = "On Track" Then 
        onTrackCount = Rows.Count 
       End If 
      End If 
     End If 
     Do Until Range("AS:AU" & mediumEndRow) 
     Loop 
    End With 

    MsgBox "Major Project Count: " & majVarCount 

над ним кодом, который я до сих пор, но я, кажется, получаю ошибку Run-Time - метод «Range» из object'_Global»не удалось - на линии

With Range("AS:AU" & mediumStartRow) 

Любые подсказки о том, как исправить

+0

Вы не используете номер стартовой строки, и вы ищете диапазон AS: AU2000. Измените на 'With Range (« AS1: AU »и mediumStartRow)' –

+0

@Scott Craner Я не могу использовать это, поскольку строки, в которые я хочу начать отсчет, всегда будут иметь другую первую строку каждый раз, когда я запускаю скрипт, поэтому я сделал немного скрипта, чтобы найти первое вхождение и последнее вхождение, т.е. mediumStartRow и mediumEndRow – user3088476

ответ

1

Вам нужно определите первый и последний номер строки в инструкции диапазона. То есть

With Range("AS" & mediumStartRow & ":AU" & mediumEndRow) 
+0

@ http://stackoverflow.com/users/2119523/s%c3%b8ren-holten-hansen, который избавился от этой ошибки и изменил строку ' Do Until Range («AS: AU» & mediumEndRow) », чтобы отразить ваш комментарий, чтобы он отображался как« Do Until Range »(« AS »& mediumEndRow &»: AU »и mediumEndRow), но я получаю ошибку во время выполнения Тип несоответствие – user3088476

+0

Я думаю, что это может быть новый вопрос. Поскольку ваш код находится в этом вопросе, я не вижу цели инструкции 'DO'' LOOP'. –

Смежные вопросы