Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.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
Arrays 无法将数组声明为公共VBA_Arrays_Vba - Fatal编程技术网

Arrays 无法将数组声明为公共VBA

Arrays 无法将数组声明为公共VBA,arrays,vba,Arrays,Vba,当我试图从Sheet1中的Main Sub()中将数组声明为public时,它抛出了一个编译错误: “不允许数组作为对象模块的公共成员” 我试图做的是声明一个数组,它的元素可以从VBA项目中添加的任何模块中计算/操作 Public Segment() As String Public SegCount As Integer Sub EDI() 'calls to subroutines placed in modules End Sub 插入一个标准编码模块-它将成为一个Module

当我试图从Sheet1中的
Main Sub()
中将数组声明为public时,它抛出了一个编译错误:

“不允许数组作为对象模块的公共成员”

我试图做的是声明一个数组,它的元素可以从VBA项目中添加的任何模块中计算/操作

Public Segment() As String

Public SegCount As Integer

Sub EDI()
   'calls to subroutines placed in modules
End Sub

插入一个标准编码模块-它将成为一个
Module1
,然后将
Public Segment()作为字符串粘贴在该模块的顶部。。。比如


通常的解决方法是使用变体

Public MyArray as Variant
这会出什么问题?很多情况下,最好将数组作为参数传递(将subs
byval a()作为字符串
,但对于函数,只能将
byval a作为变量
(如果出现错误,可以是
byref

注意:也适用(在模块内):


注2:任何停止代码的行为都会重置公共价值观……

在将近2年后,将公认的anser更改为不同的anser的动机是什么?
Option Explicit

Public rott() As String 'for a dynamyc array
'Public rott(1 to 10) As String 'for a fixed size array 

Sub ff()
ReDim rott(1 To 10) 'or redim preserve rott (1 to 10) if you want to keep values (note you can only redilm the last dimension of the array).
Debug.Print rott(1)
End Sub