2016-11-15 2 views
0

Ich versuche, diesen Code zu verwenden, um den Wert von Firstcell, um zu bestimmen, kann aber nicht eine Ausgabe erhalten:Finden erstes leeres Element in einem String Array

Sub FindFirstEmptyCell() 

    Dim l As Integer 
    Dim Firstcell As Integer 
    Dim MyArray(5) As String 
    Dim currentRowValue As String 

    MyArray(1) = "g" 
    MyArray(2) = "g" 
    MyArray(3) = "s" 
    MyArray(4) = "" 
    MyArray(5) = "f" 


    For l = 0 To 5 
      currentRowValue = MyArray(l) 
     If IsEmpty(currentRowValue) = True Or currentRowValue = "" Then 
      Firstcell = l: Exit For 
     End If 
    Next 

End Sub 
+0

was meinst du mit "output", meinst du, du bekommst nicht das erwartete Ergebnis für die Variable 'Firstcell'? –

+0

nicht klar, was Ihr eigentliches Ziel ist: Suchen Sie nach der ersten leeren Zelle in einer 'Range'? – user3598756

Antwort

0

MyArray (0) ist immer „“ von den Blicken des Codes

1

In Ihrem Code definiert Sie Dim MyArray(5) As String, was bedeutet, 6 Elemente, 0-5 starten. Wenn Sie 5 Elemente haben möchten, wechseln Sie zu Dim MyArray(4) As String. So

wenn Strings Einstellung, müssen Sie von MyArray(0) = "g" starten, und so weiter ...

Dann, wenn Sie den Code unten ausgeführt wird, müssen Sie daran denken, dass der Array Zähler beginnt von 0, und wenn Sie möchten einen Verweis auf eine Zeile in einem Arbeitsblatt erhalten, dann müssen Sie +1 hinzufügen, da es keine Zeile 0 gibt, und Sie werden einen Fehler erhalten.

Sub FindFirstEmptyCell() 

    Dim l As Integer 
    Dim Firstcell As Integer 
    Dim MyArray(4) As String 
    Dim currentRowValue As String 

    MyArray(0) = "g" 
    MyArray(1) = "g" 
    MyArray(2) = "s" 
    MyArray(3) = "" 
    MyArray(4) = "f" 

    ' loop through all elements in MyArray 
    For l = LBound(MyArray) To UBound(MyArray) 
     If IsEmpty(MyArray(l)) Or MyArray(l) = "" Then 
      Firstcell = l 
      MsgBox "First empty element in MyArray is " & Firstcell 
      Exit For 
     End If 
    Next 

End Sub 
+0

um nur durch die Deklaration der oberen Schranke eines Arrays nur die untere Schranke einzubringen wird implizit auf die herrschende Option Base gesetzt. Dies bedeutet, dass 'MyArray (4) 'als' MyArray (1 bis 4) 'kompiliert werden sollte, wenn' Option Base 1 'gilt. Um dieses Standardverhalten zu überschreiben, deklarieren Sie einfach die untere und obere Grenze ('MyArray (0 bis 4)'). – user3598756

Verwandte Themen