2017-11-20 8 views
1

私はvbaに数千のセル参照を入力する必要があります。これまでのところすべてが動作しますが、forループに "MyValue"をコードする方法を理解することはできません。助言がありますか?Forループでバリアントにセルを割り当てる

Dim MyValue1 As Variant 
Dim MyValue2 As Variant 
Dim MyValue3 As Variant 
Dim MyValue4 As Variant 
Dim MyValue5 As Variant 


MyValue1 = Cells(3, 5).Value 
MyValue2 = Cells(4, 5).Value 
MyValue3 = Cells(5, 5).Value 
MyValue4 = Cells(6, 5).Value 
MyValue5 = Cells(7, 5).Value 

Moosemanの各値は、アクセスによって挿入機能を実行するために一意である必要があります。しかし、コードがこのように書かれている場合、私はそのトリックを達成するためのループ関数を探しています。

Dim MyVariant(1 To 5) As Variant 
Dim i As Long 
For i = 1 To 5 
    MyVariant(i) = Worksheets("Data").Cells(i + 2, 5) 
Next i 

私は皆の提案を試みましたが、動作していないようです。

"Run-time error '-2147467259(80004005' Automation error Unspecified Error 
+0

なぜmyvalue変数はそれぞれ一意ですか? cells()の値からこれらの値をどうしていますか? – mooseman

+0

ページ上部の更新されたコメントをご覧ください。 – codinglady

+0

あなたの問題はこのコードではなく、Accessへの接続(ちょうど推測)によって発生しているように見えます - この行はどの行で発生するのですか?そのコードを代わりに参照する必要があります –

答えて

0

は、アレイ、ループを使用します:これは私が受け取るエラーメッセージです

Dim MyValue(0 to 9) As Variant 
Dim i As Long 

For i = 0 to 9 
    MyValue(i) = ActiveSheet.Cells(i+2,5).Value 
Next i 

または値が連続しているので、:

Dim MyValue() as Variant 
MyValue = ActiveSheet.Range(ActiveSheet.Cells(2,5),ActiveSheet.Cells(11,5)).Value 
+0

ページの – codinglady

0

それは完全にあなたが望むものに依存しますMyValueと同じようにすることができますが、次のように簡単にすることができます:

Dim MyValue as Long 
Dim i As Long 
For i = 2 To 11 
    MyValue = Cells(i, 5) 
Next i 

しかし、これはセルからの値を単一の変数にコピーするだけです。

また、このような配列にすべてのそれらの値を置くことができます。

Dim MyValue(2 To 11) as Long 
Dim i As Long 
For i = 2 To 11 
    MyValue(2) = Cells(i, 5) 
Next i 

あなたがやりたいことの多くを定義する必要があります。

+0

ページ上部の更新コメントをご覧ください。 – codinglady

0

短い回答です。代わりに配列を使用してください:

Dim cellValues As Variant 

cellValues = Range("E2:E100").Value 

For i = 1 To UBound(cellValues) 
    Debug.Print cellValues(i, 1) 
Next 
+0

ページ上部の更新されたコメントをご覧ください。 – codinglady

関連する問題