2014-09-25 53 views
0

直到現在的我用,以避免進入for循環,其循環遍歷數組這是目前空方法如下:不要進入這個循環,如果數組爲空

如果len(加入(陣列, 「」)> 0,則 對於i = 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(數組)> 0結合檢查沒有數組,如果數組沒有什麼... – Sorceri 2014-09-25 19:51:50

+0

不,ubound(array)> 0將無法正常工作,因爲如果數組爲空,則會收到錯誤消息。 – user147178 2014-09-25 19:54:09

+0

請問您可以發佈一段代碼片段嗎? (不要發佈完整的代碼,只發布相關部分;請參閱[如何創建最小完整和可驗證示例](http://stackoverflow.com/help/mcve)) – Barranka 2014-09-25 19:56:53

回答

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

對於加入()技術可靠地工作,你必須完成調光/ ReDimming過程:

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

在不填充所述陣列,在萊恩將報告

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 

現在你的主子做到這一點:

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