2016-09-14 9 views
0

したがって、私は解決しようとしている簡単な問題があります。私は文字列として読んでいる数字の列を持っています。私はその後、文字列をLongに変換し、それをLong型の配列に格納したいと考えています。VBA Excel文字列配列要素をLong型不一致に変換する

私が最初にこれを試してみました:

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は、CSVファイルの情報を保持している2次元配列です。これはString型です。 whArrayは、2つの数値の列を保持する2次元配列です。しかし、それはタイプの不一致について不平を言う。

私は多分それが空白を見ていると思ったので、私はそれをトリミングしようとしました。

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 

違いはありません。 私は何が間違っていますか?私はそれがCLngに問題を抱えていると想像しているので、わかりません。あなたはCLngに渡す

おかげ

答えて

4

非常に最初の事は"SrcWth"です。

私はあなたが1

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

であなたの次のループを開始したいので、それは数値文字列

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 

編集だ場合にもチェックを含めることができ、これは、列ヘッダであると想像します:それはデータが大きすぎて初期化されたため、配列に空の文字列が含まれていることが判明しました。 CLngで空の文字列を変換しようとすると、タイプの不一致も返されます。

+0

はい、それは私があなたの提案で修正した間違いでした。しかし、同じ行で同じエラーが発生します。 – Soolkiki

+1

デバッガを使用してエラーが表示されたら、 'CLng'に渡す内容を確認しましたか? – arcadeprecinct

+0

私はあなたのif文を試しました。私は何も渡さないようにしようとしているようで、タイプミスマッチが発生します。それは変だ。私は文字列としてすべてをうまく印刷することができるので、配列にはデータがあります。 – Soolkiki

関連する問題