2维数组做为函数返回值的问题.急!!!!!! 来者有分。

appow 2006-02-01 05:33:16
Public Function GetLanguages() As String()

Dim lngs(0 To 3,0 To 2) As String
lngs(0,1) = "Visual Basic"
lngs(0,2)=""
lngs(1,1) = "C++"
lngs(1,2)=""
lngs(2,1) = "Java"
lngs(2,2)=""
lngs(3,1) = "Cobol"
lngs(3,2)=""
GetLanguages = lngs

End Function

Private Sub Form_Load()

Dim Languages() As String
Languages = GetLanguages

Dim i As Integer
msgbox UBound(Languages,1) '不正常
' For i = LBound(Languages,1) To UBound(Languages,1)
' List1.AddItem Languages(i,1)
'Next

End Sub


以上的代码,应该是很经典的,只是到了msgbox UBound(Languages,1)就自动结束了,好象是传过来的数组有什么问题。
...全文
389 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
appow 2006-05-22
  • 打赏
  • 举报
回复
嗯,自已细心检查,谢谢
散分
Ninjai_Chan 2006-02-04
  • 打赏
  • 举报
回复
没什么问题啊!
自己细心的检查一下!
northwolves 2006-02-03
  • 打赏
  • 举报
回复
VBA中这样用:
load-->Initialize
list1-->listbox1


Public Function GetLanguages() As String()

Dim lngs(0 To 3, 0 To 2) As String
lngs(0, 1) = "Visual Basic"
lngs(0, 2) = ""
lngs(1, 1) = "C++"
lngs(1, 2) = ""
lngs(2, 1) = "Java"
lngs(2, 2) = ""
lngs(3, 1) = "Cobol"
lngs(3, 2) = ""
GetLanguages = lngs

End Function





Private Sub UserForm_Initialize()
Dim Languages() As String
Languages = GetLanguages

Dim i As Integer
MsgBox UBound(Languages, 1) '不正常
For i = LBound(Languages, 1) To UBound(Languages, 1)
ListBox1.AddItem Languages(i, 1)
Next
End Sub
zyl910 2006-02-03
  • 打赏
  • 举报
回复
用vb6试了,没问题
province_ 2006-02-03
  • 打赏
  • 举报
回复
传过来的也是个一模一样的二维数组啊,有什么不正常的?
mylzw 2006-02-02
  • 打赏
  • 举报
回复
我用vb6试了, 完全复制楼主的代码,GetLanguages()函数无论在窗体中还是在模块中,都没问题。
rainstormmaster 2006-02-02
  • 打赏
  • 举报
回复
//一旦我把GetLanguages()函数移到另一个Module,然后userForm里的Form_Load()调用它时就会有问题,郁闷啊.


没理由出现这种问题的,你仔细说说看,你是怎么测试的,是vb还是vba
appow 2006-02-02
  • 打赏
  • 举报
回复
和注释没关系,我刚才又试了一下,发现在一个userForm的程序段里,这么写确实没有问题,程序一切正常.

可是:

一旦我把GetLanguages()函数移到另一个Module,然后userForm里的Form_Load()调用它时就会有问题,郁闷啊.
csdnzl 2006-02-02
  • 打赏
  • 举报
回复
UBound(Languages,1) '不正常
确定Languages数组的第一维的最大可用下标

程序没什么问题,只要把注释去掉就可以了
For i = LBound(Languages,1) To UBound(Languages,1)
List1.AddItem Languages(i,1)
Next
appow 2006-02-02
  • 打赏
  • 举报
回复
问题是这样的
MsgBox UBound(Languages, 1) 执行不了,程序就自动停止了.
也就是说,UBound(Languages, 1)的值取不出来
IamDeane 2006-02-01
  • 打赏
  • 举报
回复
活活上面的牛都讲光了
看来我只有来接分了
呵呵
wumylove1234 2006-02-01
  • 打赏
  • 举报
回复
问题没有描述清楚.
softwarewander 2006-02-01
  • 打赏
  • 举报
回复
代码是没有问题的
同一楼上说的
rainstormmaster 2006-02-01
  • 打赏
  • 举报
回复
没什么问题,你把注释去掉试试,别忘了在窗体上添加一个listbox:
Public Function GetLanguages() As String()

Dim lngs(0 To 3, 0 To 2) As String
lngs(0, 1) = "Visual Basic"
lngs(0, 2) = ""
lngs(1, 1) = "C++"
lngs(1, 2) = ""
lngs(2, 1) = "Java"
lngs(2, 2) = ""
lngs(3, 1) = "Cobol"
lngs(3, 2) = ""
GetLanguages = lngs

End Function

Private Sub Form_Load()

Dim Languages() As String
Languages = GetLanguages

Dim i As Integer
MsgBox UBound(Languages, 1) '不正常
For i = LBound(Languages, 1) To UBound(Languages, 1)
List1.AddItem Languages(i, 1)
Next

End Sub

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧