2017-02-16 10 views
0

このコードを使用して、選択した範囲の値を配列に格納します。タイプの不一致が配列

dim lRow, i as Integer 
dim rngValues() as Variant 

rngValues = thisworkbook.Sheets(2).Range("C2:C" & lRow) 


For i = LBound(rngValues) To UBound(rngValues) 
    Debug.Print rngValues(i) ' this lines returns Type Mismatch error. 
Next i 

列にいくつかの変更を行った後、私は戻ってcolumn.Canにそれを貼り付ける必要がありますが、私はこれを理解助けてください?

+1

'rngValues'は、2次元配列である、(I 1)のDebug.Print rngValues' 'そう –

+0

あなたはレンジ値または単に範囲自体を保存しようとしていますか?値をメモリに保存/ロードすると(2次元:rngValues = thisworkbook.Sheets(2).Range( "C2:C"&lRow).Value')、2次元の次元です。第1次元: 'LBound(rngValues 、1) '、2次元:' LBound(rngValues、2) '。行は1次元、Colsは2番目です。 – PatricK

+0

@PatricK範囲値を保存しています:) – ramedju

答えて

3

編集は、特定の形式で日付の値を戻します

ティム・ウィリアムズはすでに、あなたのrngValues配列が2Dで言ったように1

次のようにコーディングできる1次元配列としてそれを持っている:

dim lRow A Long, i as Long '<--| expliciltly declare each variable and use Long for row index ones since they can exceed Integer capacity 
dim rngValues as Variant '<--| declare rngValues as a Variant instead as an array of Variant 

rngValues = Application.Transpose(ThisWorkbook.Sheets(2).Range("C2:C" & lRow).Value) '<--| transpose the "columned" values to "rowed" ones suitable for a 1D array 

For i = LBound(rngValues) To UBound(rngValues) 
    Debug.Print Format(rngValues(i),"yyyy/mm/dd") 
Next 
+0

ありがとう。しかし、上記の私の最後のコメントの回避策を知っていますか? – ramedju

+0

編集された回答を参照してください。 Format()関数を使用すると、必要なときに日付形式の文字列が得られます – user3598756

+0

このコードを追加して 'ThisWorkbook.Sheets(2).Range(" C2:C "&lRow)=列に値を貼り付けます。 (Application.Transpose(rngValues)、 "yyyy/mm/dd") 'を返しますが、型の不一致エラーを返します。 – ramedju

関連する問題