2014-03-07 132 views
1

我在excel中有一個vba數組。這個數組是一個集合大小,它不需要是可變的。向vba中的數組添加值

對於我的生活,我不知道我在做什麼錯誤嘗試將值添加到數組。 因爲它目前爲我的代碼是:

Dim count As Integer 
Dim name(1 to 361) As String 
Dim tmp As String 

Sub go() 

For count = 2 To 10 
    name(count) = cells(7,count) 
Next count 

End Sub 

我試着對這個變化的所有方式。 (7,count).value,name(count).value等等...等等...

但是我不斷收到錯誤,告訴我我錯過了或者有一個通用的語法錯誤。

在我甚至可以開始對陣列進行任何有用的操作之前,它在這個第一個障礙中真的很煩人。 這促使我找到一個無數組解決方案,但這將解決問題而不是實際解決問題。

回答

1

你的第一個問題是,go是一個保留字。從Sub中選擇另一個名稱。同樣適用於name。還有其他一些問題,請參見下面

' Dont use key words as procedure names 
Sub MySub() 
    ' Declare as procedure scope 
    ' unless there is a very good reason to use module scope 

    ' dont use key words as variable names 
    Dim cnt As Long ' Integer ' use Long by default 
    Dim nm(1 To 361) As String 
    Dim tmp As String 

    For cnt = 2 To 10 
     nm(cnt) = Cells(7, cnt) 
    Next cnt 
End Sub 
+1

Go是一個保留字?我知道GoTo和Resume,但請提醒我Go是如何使用的。 –

+0

@doug不知道爲什麼,但嘗試使用和不使用'go',你會看到 –

+0

Chris,我做了其他保留字的更改,但留下子名稱爲「Go」,並且它工作正常。 –

1

我建議使用一個動態數組賦值

Sub go() 
    Dim i as Long, N as Long 
    Dim names() as Variant 
    ' It will be initialized to names(1 to rows, 1 to columns) 

    N = 10 
    names = Range("RefToFirstCell").Resize(1,N).Value2 

    For i=1 to N 
     Debug.Print names(1,i) 
    Next i 

    'If you want to write back to the worksheet use `Range().Resize().Value2 = names`. 

End Sub 
+1

Op特別指出_這個數組是一個集合的大小,它不需要變量_。人們可能會認爲(可能是錯誤的),Op有固定尺寸的_reason_。 –

+0

OP說該數組「是一個固定的大小」。這並不意味着它必須被修復。這就是現在。我認爲這是方便的,我不同意。 – ja72