谁能帮我?
在处理Excel工作簿中的数组时,我遇到了编译错误(...:"预期数组").
基本上,我有一个'母'阵列(2D,Variant类型)和四个'baby'阵列(1D,Double类型).被调用的子例程创建公开声明的数组,我的主宏最终用于显示目的.不幸的是,婴儿阵列的最后一个出来了(给出了"编译错误:预期数组").奇怪的是,如果我删除这个最终的婴儿阵列('最终' - 按照声明/定义的顺序),第二个到最后一个婴儿阵列开始剔除.
这是我的代码:
Public Mother_Array() as Variant, BabyOne_Array(), BabyTwo_Array(), BabyThree_Array(), BabyFour_Array() as Double 'declare may other variables and arrays, too
Sub MainMacro()
'do stuff
Call SunRaySubRoutine(x, y)
'do stuff
Range("blah") = BabyOne_Array: Range("blahblah") = BabyTwo_Array
Range("blahbloh" = BabyThree_Array: Range("blahblue") = BabyFour_Array
End Sub
Sub SunRaySubRoutine(x,y)
n = x * Sheets("ABC").Range("A1").Value + 1
ReDim Mother_Array(18, n) as Variant, BabyOne_Array(n), BabyTwo_Array(n) as Double
ReDim BabyThree_Array(n), BabyFour_Array(n) as Double
'do stuff
For i = 0 to n
BabyOne_Array(i) = Mother_Array(0,i) …Run Code Online (Sandbox Code Playgroud) 一般问题......
如果我在我的VBA代码中暂停/退出/中断"For"循环(基于Excel)会有什么危险?
这是我的代码:
For i = 1 to Sheets.Count
'check stuff
'do stuff
if MsgBox("blah blah", vbyesnocancel, "blah") = vbyes then
'do stuff
GoTo loopescape
End if
Next
loopescape:
'rest of code
Run Code Online (Sandbox Code Playgroud)
基本上,我的代码构造方式过早地退出for循环(基于用户的输入).我只是想知道这是否会使我的程序易受崩溃(或其他危险).
那么,你认为中断/暂停/退出'for'循环可能会有问题吗?
谢谢,
埃利亚斯
我是否有更有效的方法来编写此用户表单代码?
Private Sub Userform_Initialize()
'do stuff
With Item1_DropDown
.AddItem "Monday"
.AddItem "Tuesday"
.AddItem "Wednesday"
End With
With Item2_DropDown
.AddItem "Monday"
.AddItem "Tuesday"
.AddItem "Wednesday"
End With
With Item3_DropDown
.AddItem "Monday"
.AddItem "Tuesday"
.AddItem "Wednesday"
End With
'and so on, and so on. (I have about fifty of these 'With/End With' blocks)
End Sub
Run Code Online (Sandbox Code Playgroud)
基本上,我希望能够停止写这么多'With/End With'块.现在,我在四个类似构造的用户表单中有这种类型的代码.它占用了太多的文本空间,似乎是一种浪费.有一个更好的方法吗?
请知道我从未写过课程模块.所以,如果解决方案需要它,我将需要被其中的宝宝所吸引.
谢谢,
埃利亚斯