Excel 在vba中将值添加到数组
我在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
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说数组“是固定大小的”。这并不意味着它必须被修复。就是现在。我认为它是为了方便而固定的,对此我不同意。