-
我不太明白你的意思,也不知道这个根本不起作用还是运行错误。
首先,我没有使用子进程。 但我认为可能是你的变量传递有问题。
除此之外。 1.我认为o是无用的。 也就是说,o 的赋值没有意义。
2.你没有指定数组的宽度,所以你不能运行它(动态数组也必须指定宽度),一般dim arr() n = a值(当时可以得到的精确值),然后redim arr(1到n)。
3. arr() 以 1 到 开头,然后 a() 变成 0 到 4,msgbox 是错误的。
5. 另外,我认为你 q=q+1 你应该把它放在 end if 之后吗?
6. 我没有使用子流程。 我认为在子进程开始时,您应该将子进程放在主程序正确运行之后,然后将其应用于子进程(以便更容易检查错误)。
-
sub macro1()
dim arr, i as long
arr =on error resume next
i = , arr)
if = 0 then
msgbox "元素 2 在数组中的位置为:" & ielse
msgbox "数组中不存在元素 2"
end if
end sub
-
没有必要深入研究为什么,如果你必须问为什么,你必须问Microsoft。 arr() 是一个动态数组,数组结构会自动生成,连续范围区域的值被分配给这个变量,VBA 默认将其视为一个数组,一旦赋值,数组大小和元素值就确定了。
-
没有动态数组。
即使您使用像 dim arr()这样的声明作为字符串,一旦分配了值,数组大小也是固定的。
如果要更改数组大小。
使用 redim 命令。
redim arr(10)
preserve redim arr()
添加 preserve 以保持数组未清空。
-
这与 VB 中的格式相同!
dim d() 作为数据类型。
-
你必须使用动态数组,如果你不必把它们全部拿出来,使用动态数组一次读取一行,读取足够多的需要,退出做跳出,如果你必须全部使用它们,那么拆分就更简单了。
-
sub test()
dim arr(),h as long, l as longarr = range("a1:c8")
l = 2h = 5
msgbox "工作。
表号" & h & "好的,部分" & l & "该列的值为:" & arr(h, l), title:="在主程序中。
信息容量"call cd(arr, h, l)
end sub
sub cd(iarr, ih, il)
ss = iarr(ih, il)
msgbox "工作表的第一部分" & ih & "好的,部分" & il & "该列的值为:" & ss, title:="子程序信息"
end sub
-
将子例程数组变量定义为公共变量!!
-
只需一个变量名称就可以了。
-
课堂模块的编写与日常写作的编程思路形成了鲜明的对比,课堂模块的主题是创造,日常练习是运用。
禁止在类模块中使用公共类型的动态数组作为模块级变量,私有级变量不能被外界直接调用,因此失去了数组的意义。
rem -==巴蜀兄弟 ==- 来自团队的支持。
public arr as new collection
public function add(byref r as range) as range
set add = r '创建对与参数 r 对应的单元格的引用。
add '将已建立的引用实例添加到 arr 集合中。
end function
然后,标准模块创建一个实例并返回集合元素的值:
private mm as new unsamesky '创建类模块 unsamesky mm 的实例
private sub xx()
dim i as long
for i = 1 to 10
1) '将单元格 A1 到 A10 添加到 mm 实例的 arr 集合中。
nextend sub
sub yy()
call xx '致电 xx
msgbox '尝试返回集合的第 3 个元素的内容,即工作表的 a3 单元格!
end sub
附件可用于测试:
-
建议大家先学习一下类模块的介绍。
-
dim,则将 A 声明为整数变量。
具体来说,你把 a 看作一个数组。
dim,a 不指定类型。
绝对可以是一个人,但是你不能按右键a只能按键盘a给一个人,蓝猫的好坏可以据此来判断。 当蓝猫飞走时,立即按A点,人不仅可以减速,而且可以伤害一次,这样蓝猫前期抓人的成功率就大大提高。 请注意,它是: >>>More