2014-03-07 85 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