excel运行提示运行错误9,下标越界,怎么处理
使用excel 宏计算 ISO18437_6_CFS 计算表格,提示
需要怎样解决呢?
Sub CFS()
Dim i, j, k As Integer'%%%%%% CLEAR DATA
Worksheets("Reduced segments").Cells.ClearDim index As Variant
index = Array(12, 24, 25, 29, 33)Dim z As IntegerFor i = 0 To 4z = Worksheets("Main CFS").Cells(index(i), Worksheets("Main CFS").Columns.Count).End(xlToLeft).Columnz = z - 1For k = 0 To z - 1Worksheets("Main CFS").Cells(index(i), k + 2).ClearNext k
Next iCharts("Master curve").ChartArea.ClearContents
Charts("log aT").ChartArea.ClearContents
Charts("log bT").ChartArea.ClearContents'%%%%%% ASSIGNING ARRAYS OF DATA
'Counting number of segments
Dim M As Integer
M = Worksheets("Main CFS").Cells(11, Worksheets("Main CFS").Columns.Count).End(xlToLeft).Column
M = M - 1'Counting number of datum points in each segment
Dim N As Integer
N = Worksheets("Raw segments").Cells(Worksheets("Raw segments").Rows.Count, 1).End(xlUp).Row
N = N - 2'Array of temperatures
Dim T As Variant
ReDim T(0 To M - 1) As DoubleFor j = 0 To M - 1T(j) = Worksheets("Main CFS").Cells(11, j + 2) + 273.15
Next j'Reference temperature
Dim ind As Integer
Dim Tref As DoubleTref = Worksheets("Main CFS").Cells(16, 2) + 273.15
ind = Application.Match(Tref, T, False)
ind = ind - 1'Array of segments
Dim logE, logf As Variant
ReDim logE(0 To N - 1, 0 To M - 1), logf(0 To N - 1, 0 To M - 1) As DoubleFor j = 0 To M - 1For i = 0 To N - 1logE(i, j) = Worksheets("Raw segments").Cells(i + 3, 2 * (j + 1))logf(i, j) = Worksheets("Raw segments").Cells(i + 3, 2 * j + 1)Next i
Next j'%%%%%% VERTICAL SHIFTING
'Vertical shift factors
Dim bT, log_bT As Variant
ReDim bT(0 To M - 1), log_bT(0 To M - 1) As DoubleFor j = 0 To M - 1bT(j) = T(j) / Treflog_bT(j) = Log(bT(j)) / Log(10)
Next j'Reduced storage modulus segments
Dim logEr As Variant
ReDim logEr(0 To N - 1, 0 To M - 1) As DoubleFor j = 0 To M - 1For i = 0 To N - 1logEr(i, j) = logE(i, j) - log_bT(j)Next i
Next j'%%%%%% HORIZONTAL SHIFTING
'Individual horizontal shift factors
Dim lgf, lgE As Variant
ReDim lgf(0 To N - 1, 0 To M - 1), lgE(0 To N - 1, 0 To M - 1) As DoubleDim lg_aT As Variant
ReDim lg_aT(0 To M - 2) As DoubleDim P, Q, U, L, r, m1, m2 As IntegerDim my_min, my_max, s1, s2 As DoubleFor j = 0 To M - 2'Point Qmy_min = logEr(0, j)Q = 0'Point Pmy_max = logEr(0, j + 1)P = 0For i = 1 To N - 1If logEr(i, j) < my_min Thenmy_min = logEr(i, j)Q = iEnd IfIf logEr(i, j + 1) > my_max Thenmy_max = logEr(i, j + 1)P = iEnd IfNext i'Point UU = Qm1 = 0Do While logEr(U, j) < my_max And U <= N - 1U = U + 1m1 = m1 + 1Loop'Point LL = Pm2 = 0Do While logEr(L, j + 1) > my_min And L >= 0L = L - 1m2 = m2 + 1LoopIf m1 = 0 Or m2 = 0 ThenMsgBox "CHECK THE DATA!" & vbNewLine & "Some segments do not overlap"lg_aT(j) = 1000Else'Point UFor r = Q To U - 1lgf(r, j) = logf(r, j)lgE(r, j) = logEr(r, j)Next rlgf(U, j) = logf(U - 1, j) + (my_max - logEr(U - 1, j)) * (logf(U, j) - logf(U - 1, j)) / (logEr(U, j) - logEr(U - 1, j))lgE(U, j) = my_max'Point LFor r = L + 1 To Plgf(r, j + 1) = logf(r, j + 1)lgE(r, j + 1) = logEr(r, j + 1)Next rlgf(L, j + 1) = logf(L - 1, j + 1) + (my_min - logEr(L - 1, j + 1)) * (logf(L, j + 1) - logf(L - 1, j + 1)) / (logEr(L, j + 1) - logEr(L - 1, j + 1))lgE(L, j + 1) = my_min'Individual shift factors1 = 0For r = Q To U - 1s1 = s1 + (lgf(r + 1, j) + lgf(r, j)) * (lgE(r + 1, j) - lgE(r, j)) / 2Next rs2 = 0For r = L To P - 1s2 = s2 + (lgf(r + 1, j + 1) + lgf(r, j + 1)) * (lgE(r + 1, j + 1) - lgE(r, j + 1)) / 2Next rlg_aT(j) = (s2 - s1) / (lgE(Q, j) - lgE(P, j + 1))End If
Next j'Final horizontal shift factors
Dim log_aT As Variant
ReDim log_aT(0 To M - 1) As Doublelog_aT(ind) = 0'Tk > Tref
For j = ind + 1 To M - 1s1 = 0For k = ind To j - 1s1 = s1 + lg_aT(k)Next klog_aT(j) = log_aT(ind) + s1
Next j'Tk < Tref
For j = ind - 1 To 0 Step -1s2 = 0For k = j To ind - 1s2 = s2 + lg_aT(k)Next klog_aT(j) = log_aT(ind) - s2
Next j'Reduced frequency
Dim logfr As Variant
ReDim logfr(0 To N - 1, 0 To M - 1) As DoubleFor j = 0 To M - 1For i = 0 To N - 1logfr(i, j) = logf(i, j) + log_aT(j)Next i
Next j'%%%%%% ASIGNING VALUES TO SHEET CELLS
'Temperature in K
For j = 0 To M - 1Worksheets("Main CFS").Cells(12, j + 2).Value = T(j)
Next j
Worksheets("Main CFS").Cells(17, 2) = Tref'Vertical shift factors
For j = 0 To M - 1Worksheets("Main CFS").Cells(24, j + 2).Value = bT(j)Worksheets("Main CFS").Cells(25, j + 2).Value = log_bT(j)
Next j'Reduced storage modulus segments
Worksheets("Reduced segments").Rows(1).EntireRow.Value = Worksheets("Raw segments").Rows(1).EntireRow.Value
Worksheets("Reduced segments").Rows(1).Font.Bold = TrueWorksheets("Reduced segments").Rows(2).EntireRow.Value = Worksheets("Raw segments").Rows(2).EntireRow.Value
Worksheets("Reduced segments").Rows(2).Interior.Color = RGB(146, 208, 80)
Worksheets("Reduced segments").Rows(2).Font.Bold = TrueFor j = 0 To M - 1For i = 0 To N - 1Worksheets("Reduced segments").Cells(i + 3, 2 * (j + 1)).Value = logEr(i, j)Next i
Next jWorksheets("Reduced segments").Columns.AutoFit'Individual horizontal shift factors
For j = 0 To M - 2Worksheets("Main CFS").Cells(29, j + 2).Value = lg_aT(j)
Next j'Final horizontal shift factors
For j = 0 To M - 1Worksheets("Main CFS").Cells(33, j + 2).Value = log_aT(j)
Next j'Reduced frequency
For j = 0 To M - 1For i = 0 To N - 1Worksheets("Reduced segments").Cells(i + 3, 2 * j + 1).Value = logfr(i, j)Next i
Next j'%%%%%% PLOT RESULTS
'Master curve
Dim mcChart As Chart
Dim X_mc, Y_mc As Variant
ReDim X_mc(0 To N - 1), Y_mc(0 To N - 1) As DoubleSet mcChart = Charts("Master curve")With mcChart'.Name = "Master curve".ChartType = xlXYScatterLines.HasTitle = True.ChartTitle.Text = "Master curve at Tref = " & Tref - 273.15 & Chr(176) & "C".Axes(xlCategory, xlPrimary).HasTitle = True.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "log f, Hz".Axes(xlCategory).AxisTitle.Font.Size = 18.Axes(xlValue, xlPrimary).HasTitle = True.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "log M', Pa".Axes(xlValue).AxisTitle.Font.Size = 18For j = 0 To M - 1Set srs1 = .SeriesCollection.NewSeriesWith srs1For i = 0 To N - 1X_mc(i) = Worksheets("Reduced segments").Cells(i + 3, 2 * j + 1)Y_mc(i) = Worksheets("Reduced segments").Cells(i + 3, 2 * (j + 1))Next i.XValues = X_mc.Values = Y_mc.Name = "T = " & T(j) - 273.15 & Chr(176) & "C"End WithNext j.HasLegend = True.Legend.Font.Size = 12
End With'Horizontal shift factors
Dim hsChart As Chart
Dim X_hs, Y_hs As Variant
ReDim X_hs(0 To M - 1), Y_hs(0 To M - 1) As DoubleSet hsChart = Charts("log aT")
With hsChart.ChartType = xlXYScatterLines.HasTitle = True.ChartTitle.Text = "Horizontal shift factors at Tref = " & Tref - 273.15 & Chr(176) & "C".HasLegend = False.Axes(xlCategory, xlPrimary).HasTitle = True.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "T, " & Chr(176) & "C".Axes(xlCategory).AxisTitle.Font.Size = 18.Axes(xlValue, xlPrimary).HasTitle = True.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "log aT".Axes(xlValue).AxisTitle.Font.Size = 18Set srs2 = .SeriesCollection.NewSeriesWith srs2For j = 0 To M - 1X_hs(j) = Worksheets("Main CFS").Cells(11, j + 2)Y_hs(j) = Worksheets("Main CFS").Cells(33, j + 2)Next j.XValues = X_hs.Values = Y_hsEnd With
End With'Vertical shift factors
Dim vsChart As Chart
Dim X_vs, Y_vs As Variant
ReDim X_vs(0 To M - 1), Y_vs(0 To M - 1) As DoubleSet vsChart = Charts("log bT")
With vsChart.ChartType = xlXYScatterLines.HasTitle = True.ChartTitle.Text = "Vertical shift factors at Tref = " & Tref - 273.15 & Chr(176) & "C".HasLegend = False.Axes(xlCategory, xlPrimary).HasTitle = True.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "T, " & Chr(176) & "C".Axes(xlCategory).AxisTitle.Font.Size = 18.Axes(xlValue, xlPrimary).HasTitle = True.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "log bT".Axes(xlValue).AxisTitle.Font.Size = 18Set srs3 = .SeriesCollection.NewSeriesWith srs3For j = 0 To M - 1X_vs(j) = Worksheets("Main CFS").Cells(11, j + 2)Y_vs(j) = Worksheets("Main CFS").Cells(25, j + 2)Next j.XValues = X_vs.Values = Y_vsEnd With
End WithEnd Sub
excel运行提示运行错误9,下标越界,怎么处理相关推荐
- 关于电子邮件客户端设计中QQ邮箱授权码问题。(运行提示535错误,说授权码error。)
问题简述 针对QQ邮箱. 在运行设计的电子邮件客户端程序显示535授权码错误,尝试过非常多次更换授权码依然失败. 问题解决 1.进入QQ邮箱,设置--账户页面. 2.在此处注册一个英文邮件账号. 3. ...
- python加载包出错_python导入Pmw包运行提示一下错误
我是Centos7.2的系统 python版本是2.7.5 错误提示: Traceback (most recent call last): File "./py020.py", ...
- 电脑运行VirtualBox虚拟机总是提示0x00000000错误的解决方法
最近有用户发现在电脑中运行VirtualBox虚拟机,总是提示0x00000000错误"0x00000000指令引用的0x00000000内存该内存不能为written,",这是由 ...
- VS2013编译提示无法运行“rc.exe”错误
VS2013编译提示无法运行"rc.exe"错误,网上搜了好多,说是改path变量的,平台改成带xp的哪个,替换rc.exe等一堆问题,都没有解决. 之后用google搜到一篇英文 ...
- nodemon运行 提示错误:无法加载文件 C:\Users\gxf\AppData\Roaming\npm\nodemon.ps1,因为在此系统上禁止运行脚本。...
nodemon运行 提示错误:无法加载文件 C:\Users\gxf\AppData\Roaming\npm\nodemon.ps1,因为在此系统上禁止运行脚本. 这是你笔记本禁止运行脚本,解决办法 ...
- nodemon运行 提示错误:无法加载文件 C:\Users\gxf\AppData\Roaming\npm\nodemon.ps1。
nodemon运行 提示错误:无法加载文件 C:\Users\gxf\AppData\Roaming\npm\nodemon.ps1.是因为你的笔记本电脑禁止运行脚本,解决办法如下: 1.在搜索区域中 ...
- excel打开提示不适合这台计算机,《win10提示excle安装》 win10 :Excel文件打不开、显示“此应用无法在你的电脑上运行”怎么办?...
win10怎么样两个excel表分开在桌面显示 1要进行对比的2张excel表格,电脑桌面,如下图: 2.双击打2张excel,如下图: 3电脑底部任务栏显示会已经打开的2个excel的表格信息,如下 ...
- Qt5.5-msvc2013-x64编译的程序在其它机器上无法运行,提示0xc000007b错误
问题描述:在win7系统上,使用Qt5.5+msvc2013-x64编译的程序在其它机器上无法运行,提示0xc000007b错误. 解决过程: 在网上查看解决方案,一度受到误导,看到大量的说需要安装D ...
- 万象2004修改服务器IP,win10系统运行万象网管2004服务端提示”类型转换错误”的图文办...
现如今,几乎家家户户都有一台电脑,当我们操作win10系统的过程中常常会碰到win10系统运行万象网管2004服务端提示"类型转换错误"的问题,有什么好的办法去解决win10系统运 ...
最新文章
- vue 父页面中的方法 调用_解决Vue中页面成功渲染数据undefined的问题
- 详解jQuery对象与DOM对象的相互转换
- C++中 auto自动变量,命名空间,using作用以及作用域
- 【Android】动态更新Icon
- linux服务器拷贝目录文件夹,linux两台服务器之间文件/文件夹拷贝
- VSS不需要验证自动登录的问题
- ebs 供应商地点信息_供应商,地址,业务实体,地点关联银行账户
- java axis2 开发webservice_利用Axis2开发WebService(3)—用Java实现调用WebService的客户端程序 | 学步园...
- pyspark 读取csv文件创建DataFrame的两种方法
- 使用 Netsh.exe 配置 WinHTTP 的代理设置
- flutter: The method ‘DioHttpHeaders.add‘ has fewer named arguments thanthose of overridden ....
- wps文件没有保存怎么恢复,学这一招就够了!
- 推荐一款微信小程序《诗词万卷》
- 股票学习-量柱和k线-第一天
- 小程序开发需要多少钱?
- 基础篇——ROS入门:学习资料、基本介绍、安装配置、文件系统、包创建
- C语言程序设计第四次作业——选择结构(2)
- 第五章 系统方法---------基于业务驱动的企业安全架构(翻译,原作者John Sherwood)----仅学习使用
- DSC和HD医学图像分割评价指标
- 如何在IDEA中写Java程序