| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4587 人关注过本帖
标题:[求助] 运行代码出现下标越界的错误提示,怎么解决
只看楼主 加入收藏
hxw871208
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-1-24
收藏
 问题点数:0 回复次数:4 
[求助] 运行代码出现下标越界的错误提示,怎么解决
Private Sub Command1_Click()
Dim m As Integer, n As Integer
Dim j As Integer, k As Integer
Dim i As Integer, Px(100) As Double
Dim pd(20) As Double
Dim md(20) As Double
Dim mx(100) As Double

For n = 1 To 18
pd(n) = 25
Next n

For n = 1 To 18
md(n) = 25 * 2.25 / Z(pd(n)) / 8.314 / 293 * 28 * 1000
Next n


For m = 1 To 98
   Px(m) = 3
Next m


For n = 1 To 98
mx(n) = 3 * 0.07 / Z(Px(m)) / 8.314 / 293 * 28 * 1000

Next n


k = 0
aa: k = k + 1
j = 1

For j = 1 To 12
Do While pd(j) - Px(k) >= 1.25


       md(j) = md(j) - 0.01
      
       pd(j) = md(j) * (1.00036 - 0.00276 * pd(j) + 0.000297905 * pd(j) * pd(j) - 0.000001584444 * pd(j) * pd(j) * pd(j)) * 8.314 * 293 / 2.25 / 28 / 1000 'Z(pd(j))
     
   
       mx(k) = mx(k) + 0.01
      
      Px(k) = mx(k) * (1.00036 - 0.00276 * Px(k) + 0.000297905 * Px(k) * Px(k) - 0.000001584444 * Px(k) * Px(k) * Px(k)) * 8.314 * 293 / 0.07 / 28 / 1000      'Z(pd(j)
      
      
    If Px(k) >= 20 Then
   
   GoTo aa
         
    End If

Loop

Next j

Text35.Text = k
Text34.Text = Px(k)


For n = 1 To 10 Step 1
i = 3 * (n - 1) + 1
Controls("Text" & i).Text = pd(n)
'Print pd(n)
Next n

End Sub
Private Function Z(ByVal X As Double) As Double
Dim result As Double
result = 1.00036 - 0.00276 * X + 0.000297905 * X * X - 0.000001584444 * X * X * X '压缩系数拟合函数

Z = result
End Function
2016-05-19 23:30
HVB6
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:15
帖 子:331
专家分:561
注 册:2013-10-30
收藏
得分:0 
Private Sub Command1_Click()
Dim m As Integer, n As Integer
Dim j As Integer, k As Integer
Dim i As Integer, Px(100) As Double
Dim pd(20) As Double
Dim md(20) As Double
Dim mx(100) As Double

For n = 1 To 18
pd(n) = 25
Next n

For n = 1 To 18
md(n) = 25 * 2.25 / Z(pd(n)) / 8.314 / 293 * 28 * 1000
Next n


For m = 1 To 98
   Px(m) = 3
Next m


For n = 1 To 98
mx(n) = 3 * 0.07 / Z(Px(m)) / 8.314 / 293 * 28 * 1000

Next n


k = 0
aa: k = k + 1
j = 1

For j = 1 To 12
if k=98 then
Do While pd(j) - Px(k) >= 1.25


       md(j) = md(j) - 0.01
      
       pd(j) = md(j) * (1.00036 - 0.00276 * pd(j) + 0.000297905 * pd(j) * pd(j) - 0.000001584444 * pd(j) * pd(j) * pd(j)) * 8.314 * 293 / 2.25 / 28 / 1000 'Z(pd(j))
     
   
       mx(k) = mx(k) + 0.01
      
      Px(k) = mx(k) * (1.00036 - 0.00276 * Px(k) + 0.000297905 * Px(k) * Px(k) - 0.000001584444 * Px(k) * Px(k) * Px(k)) * 8.314 * 293 / 0.07 / 28 / 1000      'Z(pd(j)
      
      
    If Px(k) >= 20 Then
   
   GoTo aa
         
    End If

Loop
  End If
Next j

Text35.Text = k
Text34.Text = Px(k)


For n = 1 To 10 Step 1
i = 3 * (n - 1) + 1
Controls("Text" & i).Text = pd(n)
'Print pd(n)
Next n

End Sub
Private Function Z(ByVal X As Double) As Double
Dim result As Double
result = 1.00036 - 0.00276 * X + 0.000297905 * X * X - 0.000001584444 * X * X * X '压缩系数拟合函数

Z = result
End Function
2016-05-20 07:02
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
收藏
得分:0 
程序代码:
aa: k = k + 1
For j = 1 To 12
Do While pd(j) - Px(k) >= 1.25
       md(j) = md(j) - 0.01
       pd(j) = md(j) * (1.00036 - 0.00276 * pd(j) + 0.000297905 * pd(j) * pd(j) - 0.000001584444 * pd(j) * pd(j) * pd(j)) * 8.314 * 293 / 2.25 / 28 / 1000 'Z(pd(j))
       mx(k) = mx(k) + 0.01
      Px(k) = mx(k) * (1.00036 - 0.00276 * Px(k) + 0.000297905 * Px(k) * Px(k) - 0.000001584444 * Px(k) * Px(k) * Px(k)) * 8.314 * 293 / 0.07 / 28 / 1000      'Z(pd(j)
    If Px(k) >= 20 Then
   GoTo aa    '每次循环调用一次,FOR与DO二重循环,能不越界吗
    End If
Loop
Next j

K值大于数组的下标,因此越界了
可以修改 If Px(k) >= 20 Then 为 If k <= 100 Then 这样就不会越界了,但不知道你的意图,不知行不行。

[此贴子已经被作者于2016-5-20 17:36编辑过]


请不要选我!!!
2016-05-20 16:03
hxw871208
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-1-24
收藏
得分:0 
回复 3楼 ZHRXJR
K值大于数组的下标,因此越界了
可以修改 If Px(k) >= 20 Then 为 If k <= 100 Then 这样就不会越界了,但不知道你的意图,不知行不行。

Px(k) >= 20是一个判定条件,目的是为了计算最终的K值。
能帮我看看嘛
2016-05-20 22:15
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
收藏
得分:0 
回复 4楼 hxw871208
原因就在这里,因为你在循环过程中,Px(k) 的值始终大于或等于 20,或,大部分循环中,Px(k) 的值始终大于或等于 20,因此才会 Goto aa,这样 k 的值一致在递加,就越界了。
你要解决问题,需要在这个判断语句中下功夫,可以使用And,用多个条件限制Goto,才可以,不然 k 的值一致在递加,肯定会越界的。

[此贴子已经被作者于2016-5-21 09:03编辑过]

收到的鲜花
  • hxw8712082016-05-27 22:35 送鲜花  3朵   附言:我很赞同

请不要选我!!!
2016-05-21 09:01
快速回复:[求助] 运行代码出现下标越界的错误提示,怎么解决
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032334 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved