Ric*_*d D 1 arrays string excel vba
我有许多数组,其中有不同的字符串,例如
array1() = Array("one","two","three")
array2() = Array("siz","help")
Run Code Online (Sandbox Code Playgroud)
我将字符串组合成字符串数组的数组
bigArray() = Array(array1(),array2(),...)
For k = 0 To # in bigArray
reason = causes(xValue, bigArray(k))
Next
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试将 bigArray(k) 传递给函数时,出现错误
Public Function causes(xValue As String, keyWords() As Variant) As String
Run Code Online (Sandbox Code Playgroud)
作业左侧的空括号是多余且令人困惑的,请将其删除。
我认为bigArray如果有的话,是这样声明的:
Dim bigArray [As Variant]
Run Code Online (Sandbox Code Playgroud)
如果没有声明,请
Option Explicit在模块顶部指定(始终这样做!),并声明您正在使用的每个变量 - 否则您将允许 VBA 愉快地编译和运行拼写错误,这不可避免地会变得令人尴尬、难以-在 Stack Overflow 上查找错误以及可能重复的问题。
AVariant可以容纳任何东西,包括数组或锯齿状数组(即数组的数组)。
keywords不过参数...
Public Function causes(xValue As String, keyWords() As Variant) As String
Run Code Online (Sandbox Code Playgroud)
被声明为一个数组,其中每个元素都是一个变体。虽然变体元素确实可以是一个数组,但当您将数组作为参数传递时,无法说“其中每个元素都是变体元素的数组”,因此如果您只是将其包装起来,您会更容易在 a 中Variant(然后断言您正在查看一个数组):
Public Function causes(xValue As String, keyWords As Variant) As String
Debug.Assert IsArray(keyWords)
Debug.Assert IsArray(keyWords(LBound(keyWords))
Run Code Online (Sandbox Code Playgroud)
您的For循环假设下限是:
Run Code Online (Sandbox Code Playgroud)For k = 0 To # in bigArray
不做任何假设的循环是:
For k = LBound(bigArray) To UBound(bigArray)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1313 次 |
| 最近记录: |