2016-09-15 9 views
3

私はいくつかのexcel-VBAを書いています。インデックス1から11の配列に整数の数(合計11)を割り当てています。今は一度に1つのインデックスを作成しています。 Matlabのように1行で行う方法と似ています。私はそれが配列として変数を定義することなく行うことができることを認識していますVBAで配列に値を代入する方法はありますか?

Dim cols(1 To 11) As Integer 

cols = [2,3,5,6,7,9,10,13,14,15,16] 

、しかし:

Dim cols(1 To 11) As Integer 

cols(1) = 2 
cols(2) = 3 
cols(3) = 5 
cols(4) = 6 
cols(5) = 7 
cols(6) = 9 
cols(7) = 10 
cols(8) = 13 
cols(9) = 14 
cols(10) = 15 
cols(11) = 16 

を、私はそれをしたいと思っ方法:どのように私はそれを今やっている

Variant配列がOKであれば

Dim cols As Variant 

cols = Array(2,3,5,6,7,9,10,13,14,15,16] 
+0

'For'ループを? 3行 –

+1

'Option Base 1 'をモジュールの先頭に追加することができます。最後の例は1から11まで有効です。またはShaiの提案に従ってください。 –

答えて

4

:それは私のために望ましくない10のインデックス0の配列を返します

Dim cols() 
cols = [{2,3,5,6,7,9,10,13,14,15,16}] 
+1

説明:これは、Excel式として文字列を評価する 'cols = Application.Evaluate(" {2,3,5,6,7,9,10,13,14,15,16} ")'の構文砂糖です。 。 – GSerg

+1

まあ、 '[]'と 'Evaluate'はまったく同じではありませんが、ほとんどの目的には十分に近いものです。 – Rory

+0

バリアント配列がOK以上です。この場合、私の問題を解決しましたが、インデックスを2から12または7から17にする必要がある場合はどうすればよいですか? とにかくあなたの答えが私を助け、私はそれを受け入れたとマークしました。助けてくれてありがとう! –

2

あなたの代わりに1行の2行で大丈夫であれば、あなたはこれを試すことができます。

Dim cols As Variant 

cols = Array(2,3,5,6,7,9,10,13,14,15,16) 
ReDim Preserve cols(1 To UBound(cols) + 1) 
関連する問題