2016-08-17 86 views
0

我有一個問題,將Excel中的變體粘貼到指定的範圍。我有以下代碼,但[E1:E15]的輸出在整個範圍內爲0。我想看到的是1一路15VBA - 粘貼變體值

我無法找到解決這一特定問題(部分原因是因爲我不能確定是什麼這個問題被定義爲withing Excel中的術語)。對於這個特定代碼的任何幫助或者在VBA中完成這個更自然的方法都非常感謝。謝謝!

Sub TEST() 

Dim SIZE As Integer 
SIZE = 15 

Dim VECTOR() As Integer 
ReDim VECTOR(SIZE) 

Dim i 

For i = 1 To SIZE 

    VECTOR(i) = i 

Next i 

[E1:E15].Value = VECTOR 

End Sub 
+0

那'[E1:E15]'符號可能是有效的,但它隱含指的是活動工作表中活動工作簿。您可能希望更明確地指定它並分配'ActiveSheet.Range(「E1:E15」)。這樣以後參數化工作表會容易得多。更不用說它不是一個常見的符號,所以避免它可能會給維護你的代碼的人留下一點「WTF」時刻。 –

+0

您創建的數組實際上是一維數組,而不是需要的2D類型的行或列類型。 – PaulG

回答

1

您正試圖將水平數組傳遞到垂直範圍。

要麼轉置陣列或使該陣列的2D用的1中的第二尺寸:

Sub TEST() 

Dim SIZE As Integer 
SIZE = 15 

Dim VECTOR() As Integer 
ReDim VECTOR(1 To SIZE, 1 To 1) 

Dim i 

For i = 1 To SIZE 

    VECTOR(i, 1) = i 

Next i 

[E1:E15].Value = VECTOR 

End Sub 

移調版本:

Sub TEST() 

Dim SIZE As Integer 
SIZE = 15 

Dim VECTOR() As Integer 
ReDim VECTOR(1 To SIZE) 

Dim i 

For i = 1 To SIZE 

    VECTOR(i) = i 

Next i 

[E1:E15].Value = Application.Transpose(VECTOR) 

End Sub 

一個警告:移調有一個限制到它可以處理的物品數量。

+0

完美,感謝代碼。我不知道所創建的陣列是水平的!謝謝! –

0

或只是

[E1:E15] = [row(E1:E15)]