2015-03-07 6 views
0

Я пытаюсь написать функцию, которая даст вам ближайший город из списка в заданную координату или состояние в зависимости от логического значения. вот что у меня естьvba update named range cells

Function GetCity(x As String, Optional b as Boolean) As String 
    Dim i As Long, count As Long, row As Long 
    Dim min As Double 

    Count = Range("Table_IVO").Rows.Count 
    min = 9999999 

    For i = 1 To Count 
     If dist(x, Range("Table_IVO")(i,1).Value) < min Then 
      min = dist(x, Range("Table_IVO")(i,1).Value) 
      row = i 
     End If 
    Next i 

    If b = True Then 
     GetCity = Range("Table_IVO")(row, 3).Value 
    Else 
     GetCity = Range("Table_IVO")(row, 2).Value 
    End If 
End Function 

Стол накрыт, как так

A  B  C 
Coords City State 

Он попадает в петлю, но никогда не петлями? Он умирает еще до выполнения, если

+1

Что такое ** dist() ** ?? –

+0

«Funciton» может быть самой нелепой ошибкой. – user3819867

+0

Почему вы не отлаживаете свой код, используя шаг ('F8')! Что значит, что он попадает в цикл, но никогда не петли? –

ответ

0
 If b = True Then 
     GetCity = Range("Table_IVO")(row, 3).Value 
    Else 
     GetCity = Range("Table_IVO")(row, 2).Value 
    End 

Хотя я мог бы получить больше ясности, глядя на полный код, но если это именно то, что ваш код, который у выполняются, то, возможно, вы пропустили написание Если в конце End в последней строке примера кода, как в

 If b = True Then 
     GetCity = Range("Table_IVO")(row, 3).Value 
    Else 
     GetCity = Range("Table_IVO")(row, 2).Value 
    End If 

в зависимости от среды, которые выполняются ваш код, он не может показать ошибку компиляции.

+0

плохо проверить завтра, чтобы быть уверенным, но сомневаюсь, что это так, поскольку excel помедлил бы, это, вероятно, просто опечатка, написав его здесь. Кроме того, функция даже не достигает этой точки, поскольку я утверждал, что она не выходит из цикла .... Она запускает функцию dist один раз, а затем останавливается. Их ошибка. Я добавил несколько отладочных отпечатков, чтобы быть уверенным, и он превращает его в цикл, но никогда не попадает в if ... Я проверяю вывод dist, и он отлично считывает около 1000, что меньше, чем min в начале, поэтому он должен сделать это в if. – midaym

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