vba是将数组中的所有值设置为相同值的更好方法
这是个人好奇心的问题 在VBA中,如果我有一个大小为2的数组:vba是将数组中的所有值设置为相同值的更好方法,vba,excel,Vba,Excel,这是个人好奇心的问题 在VBA中,如果我有一个大小为2的数组: Dim r(1) as Variant 我希望数组中的两个值都是-1。我可以这样做: r(0)=-1 r(1)=-1 或者我可以用循环遍历这两个函数,并将它们设置为-1 所以我的问题是,有没有办法不用迭代就将数组中的所有值设置为相同的值 或者,我有什么办法可以做到: r = array(-1,-1) 这可能是一个非常愚蠢的问题,但我似乎找不到答案。是的,你能做到。但是在声明数组时必须小心 范例 Option Explicit
Dim r(1) as Variant
我希望数组中的两个值都是-1。我可以这样做:
r(0)=-1
r(1)=-1
或者我可以用循环遍历这两个函数,并将它们设置为-1
所以我的问题是,有没有办法不用迭代就将数组中的所有值设置为相同的值
或者,我有什么办法可以做到:
r = array(-1,-1)
这可能是一个非常愚蠢的问题,但我似乎找不到答案。是的,你能做到。但是在声明数组时必须小心 范例
Option Explicit
Sub Sample()
Dim r As Variant '<~~
r = Array(-1, -1)
Debug.Print r(0)
Debug.Print r(1)
End Sub
我不太擅长画图像。但这应该让您了解并弄清楚与变量数组相关的概念
->为什么需要将数组的所有值设置为相同?@Scott,因为我将更改其中一些值,并且我希望默认值为-1。再一次,我只是好奇是否有更好的方法来做这件事,因为我可以想出更好的方法在其他语言(如matlab)中做这件事。谢谢出于好奇,为什么我不能将数组r(1)声明为数组(-1,-1)?请参见Excel帮助文件:)数组函数返回一个包含数组的变量。不能将一个数组直接分配给另一个数组。请参阅更新的帖子。+1 Array()是一个函数,而不是声明语句。它接受任意数量的项作为参数,并返回一个包含这些元素的variant类型的数组。因此,不能将r(1)声明为数组(-1,-1)。您必须将其声明为变量(即数组函数返回的数据类型)。@Alec:我对您的上一条评论感到困惑
为什么我不能将数组r(1)声明为数组(-1,-1)
。我想sid已经回答了您的问题,您不能直接将数组分配给另一个数组。这是我仍然不理解的:这两种类型的数组最终将完全相同。它们都是相同大小的“variant/variant(0到1)”类型的数组。在调试模式下,它们在watch中的外观完全相同。既然它们是相同的数据类型,为什么我不能将一个分配给另一个呢?+1表示遍历和超越:)
Option Explicit
Sub Sample()
Dim r(1) As Variant
Dim s As Variant
Dim i As Long
s = Array(-1, -1)
For i = LBound(r) To UBound(r)
r(i) = s(i)
Next
Debug.Print r(0)
Debug.Print r(1)
End Sub