2011-08-23 121 views
0

我有一個關於Excel VBA的小問題。在下面的腳本中,我得到了一行錯誤1004:ActiveSheet.Cells(row,0).Text = elements(i),以及以下行。 任何幫助將不勝感激!Excel VBA問題1004

Sub Mogelijkheden() 
Workbooks("Model-v6-final-test_macro_2.xlsm").Sheets("Variaties").Activate 
ActiveSheet.Activate 

Dim elements(3) As Variant 
elements(0) = ActiveSheet.Cells(3, 2).Text 
elements(1) = ActiveSheet.Cells(4, 2).Text 
elements(2) = ActiveSheet.Cells(5, 2).Text 

Dim length As Integer 
length = UBound(elements) - LBound(elements) + 1 

Dim i As Integer 
Dim j As Integer 
Dim k As Integer 
Dim x As Integer 
Dim y As Integer 
Dim z As Integer 
Dim c As Integer 
Dim b As Integer 
Dim v As Integer 
Dim n As Integer 

Dim row As Integer 
row = 10 

'Now, "print" the combinations by looping through your array 
For i = 0 To length 
For j = 0 To length 
For k = 0 To length 
For x = 0 To length 
For y = 0 To length 
For z = 0 To length 
For c = 0 To length 
For b = 0 To length 
For v = 0 To length 
For n = 0 To length 

ActiveSheet.Cells(row, 0).Text = elements(i) 
ActiveSheet.Cells(row, 1).Text = elements(j) 
ActiveSheet.Cells(row, 2).Text = elements(k) 
ActiveSheet.Cells(row, 3).Text = elements(x) 
ActiveSheet.Cells(row, 4).Text = elements(y) 
ActiveSheet.Cells(row, 5).Text = elements(z) 
ActiveSheet.Cells(row, 6).Text = elements(c) 
ActiveSheet.Cells(row, 7).Text = elements(b) 
ActiveSheet.Cells(row, 8).Text = elements(v) 
ActiveSheet.Cells(row, 9).Text = elements(n) 

row = row + 1 

Next n 
Next v 
Next b 
Next c 
Next z 
Next y 
Next x 
Next k 
Next j 
Next i 

End Sub 
+1

單元格(行,0)不在上下文中。 A1 =單元格(1,1)。 – JoshRoss

+1

你究竟想要做什麼?您發佈的代碼將循環〜59,000次 – Banjoe

+0

我必須創建一系列9個變量* 3個選項的所有可能性,這些選項應該生成3 ^個選項或19683個可能性。我將在下面的評論中上傳最終腳本,以展示我是如何最終成功實現它的。 – Milan

回答

2

更改長度分配:

length = ubound(elements) - 1

而且,你想要的:

ActiveSheet.cells(row, 1).value = elements(i)

你不能寫Text屬性

+0

謝謝你的回答,在此我設法讓腳本工作。我做了一些其他的改變,以匹配腳本的目的(以產生3^9個可能性),但通過改變這些行,腳本完美地運行。 – Milan

1
ActiveSheet.Cells(row, 0).Text = elements(i) 

excel中沒有第0列。您必須從第1列開始並轉到10.

.Text也是範圍對象的只讀屬性。改爲使用.Formula

一旦你解決了這些問題,你會發現你的循環過高(你的Length = 4,但它應該真的是=3,你的循環應該只是0到2)。

編輯:即使您修復這些問題,您也會遇到更多問題。我不會把它們全部送走,但可以說3^10 = 59,049,這可能會造成小數值數據類型的問題。