我通过以下方式将PIXEL_DATA定义为全局变量
Dim PIXEL_DATA() As Variant
我在子例程中使用ARRAY函数对其进行了初始化。在该子例程中,PIXEL_DATA中包含适当的数据。
但是当我尝试从另一个子例程访问时
Ptr = PIXEL_DATA(2)
我收到“ PIXEL_DATA”蓝色并且错误消息“编译器错误:未定义子项或函数”。
我想念什么?
答案 0 :(得分:2)
您缺少Dim
正在PIXEL_DATA()
的 where 的关键组成部分。这是一个示例:
Sub MainSub()
Dim PIXEL_DATA() As Variant
PIXEL_DATA = Array(1, 2, 3, 4, 5)
Call OtherSub
End Sub
Sub OtherSub()
Dim Ptr As Long
Ptr = PIXEL_DATA(2)
Debug.Print Ptr
End Sub
运行MainSub()
将导致突出显示OtherSub()
的编译错误,因为PIXEL_DATA()
超出范围。但是将PIXEL_DATA()
移到模块化级别会编译,运行并按预期将3返回到立即窗口:
Dim PIXEL_DATA() As Variant
Sub MainSub()
PIXEL_DATA = Array(1, 2, 3, 4, 5)
Call OtherSub
End Sub
Sub OtherSub()
Dim Ptr As Long
Ptr = PIXEL_DATA(2)
Debug.Print Ptr
End Sub
如果您的OtherSub()
在其他模块中,则需要像上面提到的@tigeravatar一样声明为Public
。