Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 在vba中将值添加到数组_Excel_Vba - Fatal编程技术网

Excel 在vba中将值添加到数组

Excel 在vba中将值添加到数组,excel,vba,Excel,Vba,我在excel的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

我在excel的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,计数)。值,名称(计数)。值等。。。等等

但我不断收到错误,告诉我我缺少as或有一个通用语法错误

在我还没来得及开始对阵列做任何有用的事情之前,就在这第一个关卡上摔倒真的很烦人。
这促使我寻找一个无阵列的解决方案,但这将是解决问题而不是实际解决问题。

您的第一个问题是
go
是一个保留字。从
子菜单中选择另一个名称。这同样适用于
名称
。还有其他几个问题,见下文

' 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

我建议使用动态数组赋值

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

Go是一个保留字吗?我知道GoTo和Resume是,但请提醒我Go是如何使用的。@doug不知道为什么,但尝试使用和不使用
Go
,你会看到Chris,我对其他保留字进行了更改,但将子名称保留为“Go”,并且有效。Op特别说明此数组是一个设置大小,不需要可变。人们可能会认为(可能是错误的)Op有固定大小的理由。Op说数组“是固定大小的”。这并不意味着它必须被修复。就是现在。我认为它是为了方便而固定的,对此我不同意。