office vba 求助,下标越界错误

u013010896 2013-12-12 11:22:29
本人新手,最近做一个比赛,从一篇论文上摘了一段vba程序,运行出现下标越界……
请各路大神帮忙看看,多谢多谢~
程序如下:
本人新手,基本不会,最近做比赛用到的一个程序,是从网上一篇论文里摘的,但是运行时出现下标越界错误。
程序如下:
Option Base 1
Sub 命名及公式()
Set 名 = Names
名.Add "A", " = Offset(图! $ D $ 4,0,0,M,1)"
名.Add "B", " = Offset(图! $ E $ 4,0,0,M,1)"
名.Add "K", " ="""""
名.Add "T", " = 图! $ D $4:$ D $ 63"
名.Add "M", " =Countif(T,"">""&xw)+1"
名.Add "N", " =Count(图! $ B $4:图! $ B $ 58)"
名.Add "E", " =图! RC[-1]"
名.Add "P", " ={0,0;1,1}"
名.Add "U", " =OFFSET(图! $ C $4,0,0,N,1)"
名.Add "V", " =OFFSET(图! $ B $4,0,0,N,1)"
[L1:M2] = [P]: [F6:K7].CreateNames Top:=1
[L3:M9,I9:J10].CreateNames Left:=1
[F4:K4] = Array("0", "=J", "=xf", "=xf", "=xw", "=xw")
[F5:K5] = Array( _
"= xD", "= xD", "= _ xd", "= _yd", "= _xd", "= _yd")
[F7:G7].FormulaArray = " = Linest(G4:G5,F4:F5)"
[H7:I7] = Array("=g", "= -xF/(q-1)")
[J7:K7].FormulaArray = "=Linest(K4:K5,J4:J5)"
[ _ xd] = "=(φ0 - α0)/(α1 - φ1)": [ _ yd] = "=φ1 * _xd + φ0"
[M8] = "=q/(q-1)": [M9] = "=xd/( _ R+1)"
[D4] = "=xd": E4 = "=xd"
[E5] = "=E4": [D6] = "=D5"
[D5] = "=IF(E5>xw,插值(U,V,E5),0)"
[E6] = "=IF(E>xw,IF(E> _ xd,α1*E+α0,γ1*E+γ0),0)"
[D5:E6].AutoFill Destination:=[D5:E63], Type:=0
End Sub

Function 插值(X, Y, U)
N = X.Count
For k = 1 To N - 1
If (U - X(k)) * (U - X(k + 1)) <= 0 Then GoTo 10
Next k
If (U - (1)) < (U - X(N)) Then k = 1 Else k = N - 1
10 G = (U - X(k)) < (U - X(k + 1))
If k = N - 1 Or k <> 1 And G Then k = k - 1
V = 0
For I = k To k + 2
L = 1
For J = k To k + 2
If I <> J Then L = L * (U - X(J)) / (X(I) - X(J))
Next J
V = V + L * Y(I)
Next I
插值 = V
End Function

Sub 理论板数图()
B = "图": Worksheets(B).Select
Range("I13").Select
Charts.Add
xp = "B4:B23": yp = "C4:C23"
Set 图 = ActiveChart
图.ChartType = 72
For I = 1 To 6
图.SeriesCollection.NewSeries
Next
X = Array(xp, "d4:d63", "f4:f5", _
"h4:h5", "j4:j5", "L1:L2")
Y = Array(yp, "e4:e63", "g4:g5", _
"i4:i5", "k4:k5", "m1:m2")
For I = 1 To 6
With ActiveChart.SeriesCollection(I)
.XValues = Worksheets(B).Range(X(I))
.Values = Worksheets(B).Range(Y(I))
End With
Next I
图.SeriesCollection(2).Select
图.SeriesCollection(2).ChartType = 75
For I = 1 To 2
图.Axes(I).Select
With ActiveChart.Axes(I)
.MinimumScale = 0
.MaximumScale = 1
.MinorUnit = 0.1
.MajorUnit = 0.1
End With
Next I
W = Array("b", "a", "e-d 进料线", "", "c", "d")
k = 1
For I = 3 To 5
With 图.SeriesCollection(I)
For J = 1 To 2
.Points(J).HasDataLabel = 1
.Points(J).DataLabel.Text = W(k)
k = k + 1
Next
End With
Next
Set T = 图.SeriesCollection(2)
For I = 1 To 28
T.Points(I * 2).HasDataLabel = 1
T.Points(I * 2).DataLabel.Text = Str(I)
Next
'设置图标选项:标题,X,Y
W = "图解法求理论板数": 图.HasTitle = 1
图.ChartTitle.Characters.Text = W
图.Axes(1, 1).HasTitle = True
图.Axes(1, 1).AxisTitle.Characters.Text = "x"
图.Axes(2, 1).HasTitle = True
图.Axes(2, 1).AxisTitle.Characters.Text = "y"
'设置图标区,区域无边框,白色,无网格。
图.PlotArea.Border.LineStyle = xlNone
图.PlotArea.Interior.ColorIndex = 2
图.Axes(xlValue).MajorGridlines.Delete
图.Legend.Delete
图.Location Where:=2, Name:="图"
V = Mid(ActiveChart.Name, 3, 18)
ActiveSheet.Shapes(V).ScaleWidth 1.32, 0, 0
ActiveSheet.Shapes(V).ScaleHeight 1.87, 0, 0
ActiveChart.ChartArea.Font.Size = 12
Set T = ActiveChart.SeriesCollection(2)
T.DataLabels.Font.Size = 8
T.DataLabels.Position = -4131
T.XValues = "=图! A": T.Values = "=图! B"
ActiveChart.PlotArea.Border.ColorIndex = 56
For I = 1 To 6 Step 5
ActiveChart.SeriesCollection(I).Select
With Selection
.MarkerBackgroundColorIndex = xlNone
.MarkerForegroundColorIndex = xlNone
End With
Next
Sheets(I).[A1].Select
End Sub

稍微有点长,请各路大神帮忙看看哪里有错误,代码是从一篇论文里摘的
多谢多谢~
...全文
1139 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
东一榔头 2015-01-24
  • 打赏
  • 举报
回复
看着头皮麻,不知道别的人有没有这样想法
  • 打赏
  • 举报
回复
单步运行,哪句报错贴上来。
dsd999 2013-12-16
  • 打赏
  • 举报
回复
有文件吗? 传上来

5,139

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 Office开发/ VBA
社区管理员
  • Office开发/ VBA社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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