数组下标越界,为何?谁给看一下
Dim myName As String, myPath As StringReDim mName(0) As String
myPath = "" & App.Path & "\My Documents\MYphotos\TiBet\"
myName = Dir(myPath)
Do While myName <> "" ' 开始循环。
If Right(myName, 4) = ".bmp" Then
'Debug.Print myPath & myName
ReDim Preserve mName(UBound(mName) + 1) As String
mName(UBound(mName)) = myPath & myName
End If
myName = Dir ' 查找下一个目录。
Loop
Set P(0).Picture = LoadPicture(mName(UBound(mName)))
Set P(1).Picture = LoadPicture(mName(1))
Set P(2).Picture = LoadPicture(mName(2))
n = 1 Set P(0).Picture = LoadPicture(mName(UBound(mName)))具体是哪句提示错误的?是不是这句? 你断点Debug看看你的mName里面到底有多少个值
Set P(0).Picture = LoadPicture(mName(UBound(mName)))
Set P(1).Picture = LoadPicture(mName(1)) '--万一里面就一个值呢
Set P(2).Picture = LoadPicture(mName(2))'--同理 Set P(0).Picture = LoadPicture(mName(UBound(mName)))
Set P(1).Picture = LoadPicture(mName(1))
Set P(2).Picture = LoadPicture(mName(2))
以上三句改成以下这样:
for i=0 to ubound(mName)
Set P(i).Picture = LoadPicture(mName(i))
next
Set P(0).Picture = LoadPicture(mName(UBound(mName))) 数组下标越界这是最普通的错误,肯定是你定义了N个数的数组,程序中企图去使用第N+1个元素 Dim myName As String, myPath As String
ReDim mName(0) As String
myPath = "" & App.Path & "\My Documents\MYphotos\TiBet\"
myName = Dir(myPath)
Do While myName <> "" ' 开始循环。
If Right(myName, 4) = ".bmp" Then
'Debug.Print myPath & myName
ReDim Preserve mName(UBound(mName) + 1) As String
mName(UBound(mName)) = myPath & myName
End If
myName = Dir ' 查找下一个目录。
Loop
Set P(0).Picture = LoadPicture(mName(UBound(mName)))
Set P(1).Picture = LoadPicture(mName(1))
Set P(2).Picture = LoadPicture(mName(2))
n = 1
myPath = "" & App.Path & "\My Documents\MYphotos\TiBet\"
因为这句写相对路径没写对,我用绝对路径:myPath = D:\My Documents\MYphotos\TiBet\"
就没有错了!请问如何写相对路径才是对的 App.Path 当前应用程序所在的路径的,也是绝对路径,
把My Documents\MYphotos\TiBet\移到应用程序同一目录下
补充:VB , 基础类