2016-09-14 4 views
0

so habe ich ein einfaches Problem, das ich versuche zu lösen. Ich habe eine Spalte mit Zahlen, die ich als String einlese. Ich möchte dann die Zeichenfolge in eine Long konvertieren und diese in einem Array vom Typ Long speichern.VBA Excel Konvertieren String Array-Element in Long "Typ Mismatch"

habe ich versucht, dies zunächst:

ElseIf stArray(0, i) = "SrcWth" Then 
     Debug.Print "Found the Width Column" 
     For j = 0 To UBound(stArray) 
      whArray(0, j) = CLng(stArray(j, i)) 
     Next j 

starray der 2D-Array ist, dass die CSV-Info-Datei hält. Es ist Typ String. whArray ist das 2d-Array, das die zwei Zahlenspalten enthält, die ich haben möchte. Es beklagt sich jedoch über die Typabweichung.

Ich dachte dann vielleicht, dass es etwas Whitespace sehen würde, also versuchte ich es zu trimmen.

ElseIf stArray(0, i) = "SrcWth" Then 
     Debug.Print "Found the Width Column" 
     For j = 0 To UBound(stArray) 
      whArray(0, j) = CLng(Trim(stArray(j, i))) 
     Next j 

Es machte keinen Unterschied. Was mache ich falsch? Ich stelle mir vor, dass es ein Problem mit der CLng hat, also bin ich mir nicht sicher.

Dank

Antwort

4

Das allererste, was Sie CLng passieren ist "SrcWth".

ich das vorstellen, ist die Spaltenüberschrift, so dass Sie bei der nächsten Schleife beginnen soll 1

For j = 1 To UBound(stArray, 1) 
    whArray(0, j) = CLng(Trim(stArray(j, i))) 
Next j 

Sie auch einen Scheck enthalten könnte, wenn es sich um eine numerische Zeichenfolge ist

For j = 1 To UBound(stArray, 1) 
    If Not isNumeric(Trim(stArray(j, i))) Then 
     MsgBox "invalid value: """ & Trim(stArray(j, i)) & """ at position " & j & ", " & i 
    Else 
     whArray(0, j) = CLng(Trim(stArray(j, i))) 
    End If 
Next j 

bearbeiten : Es stellte sich heraus, dass das Array leere Strings enthielt, weil es zu groß für die Daten initialisiert wurde. Wenn Sie versuchen, eine leere Zeichenfolge mit CLng zu konvertieren, wird auch ein Typenkonflikt zurückgegeben.

+0

Ja, das war ein Fehler, den ich auf Ihren Vorschlag hin korrigiert habe. Aber ich bekomme denselben Fehler in der gleichen Zeile. – Soolkiki

+1

Haben Sie überprüft, was Sie an 'CLng' übergeben, wenn der Fehler mit dem Debugger auftritt? – arcadeprecinct

+0

Ich habe deine if-Anweisung ausprobiert. Es scheint, dass ich versuche, nichts weiterzugeben, was zu einem Typ-Mismatch führen würde. Das ist komisch. Es gibt definitiv Daten im Array, weil ich alles gut als String ausdrucken kann. – Soolkiki