2014-09-25 2 views
0

Тиль теперь метод я использую, чтобы не идти в течение петли, петли через массив, который в настоящее время пуст имеет следующий вид:Не ходите в эту петлю, если массив пуст

если Len (присоединиться (массив , «»)> 0, то для я = 1 в UBound (массив) код следующий конец, если

Но это не шутка, я просто недавно использовал эту строку кода, если Len (присоединиться (массив» ")> 0, и это вызвало удаление массива, и он разбил мою программу 5 раз подряд. Я знаю, что звучит сложно поверить, но вот скриншот enter image description here

по какой-то причине код len (join (array, "")> 0 уничтожит массив variables2. А вот снимок экрана, который показывает, что массив переменных явно полностью, прежде чем я хожу в плохой код: enter image description here Так что теперь я пытаюсь использовать другой код, который я пробовал:

если не IsEmpty (массив), то

Но это не работает. Есть идеи?

If Len(Join(greek_act, "")) > 0 Then 
     For i = 1 To UBound(greek_act) 
      For j = 1 To UBound(variables2) 
       If greek_act(i) = variables2(j) Then 
       variables2(j) = "" 
       Exit For 
       End If 
      Next 
     Next 
    variables2 = remove_blanks(variables2) 
    End If 

    'variables2 array is full 

    If Len(Join(greek_letters, "")) > 0 Then 

    'variables2 array gets destroyed and program crashes here. 

      For i = 1 To UBound(greek_letters) 
       rightres1 = Replace(rightres1, greek_letters(i), variables2(i)) 
      Next 

    End If 
+0

вероятно, потребуется, если ubound (array)> 0 в сочетании с проверкой ничего, если массив ничего ... – Sorceri

+0

no, ubound (array)> 0 не будет работать, потому что если массив пуст, я получаю сообщение об ошибке. – user147178

+0

не могли бы вы опубликовать фрагмент кода? (не публикуйте полный код, только соответствующую часть, см. [Как создать минимальный полный и проверяемый пример] (http://stackoverflow.com/help/mcve)) – Barranka

ответ

0

Ничего, я решил просто идти вперед со следующим решением, так как оказывается, что программа временно действует до

On Error Resume Next 

     For i = 1 To UBound(greek_letters) 
      rightres1 = Replace(rightres1, greek_letters(i), variables2(i)) 
     Next 



On Error GoTo 0`` 
0

Для Join() техника надежно работать, вам должен завершить процессЗатемнение/ReDimming:

Sub dural() 
    Dim greek_ary(1 To 3) As String 
    s = Join(greek_ary, "") 
    MsgBox Len(s) 
End Sub 

Без заполнения массива, Len сообщит

0

Поскольку это общий тест, который я хотел бы использовать многоразовую функцию:

Function IsArrayEmpty(anArray As Variant) 
    Dim i As Integer 

    On Error Resume Next 
     i = UBound(anArray, 1) 
    If Err.Number = 0 Then 
     IsVarArrayEmpty = False 
    Else 
     IsVarArrayEmpty = True 
    End If 
End Function 

Теперь в главном Sub это сделать:

If Not IsArrayEmpty(greek_act) Then 
    For i = 1 To UBound(greek_act) 
     For j = 1 To UBound(variables2) 
      If greek_act(i) = variables2(j) Then 
       variables2(j) = "" 
       Exit For 
      End If 
     Next 
    Next 
    variables2 = remove_blanks(variables2) 
End If 
Смежные вопросы