vba - PowerPoint:循环数组时 VBA 下标超出范围
问题描述
我正在尝试使用循环将一维数组拆分为二维数组并填充 VBA 中的文本框。我得到错误,下标超出范围的 Table(j, i - 4) 在以下行中: Table(j, i - 4) = inputArray(10 * (i - 4 - 1) + (j - 1) )请让我知道是否有更好的方法来做到这一点,任何帮助表示赞赏
部分代码如下
For i = 5 to 9
Dim inputArray As Variant
Dim Table As Variant
inputArray = Array(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9)
For j = 1 To UBound(inputArray)
Table = Array(j, i - 4)
Table(j, i - 4) = inputArray(10 * (i - 4 - 1) + (j - 1))
Next j
Set oPicture = oSl.Shapes.AddTextbox(msoTextOrientationHorizontal, _
Left:=TBLeft1, Top:=TBTop1, _
Width:=TBWidth1, Height:=TBHeight1)
oPicture.TextFrame.TextRange.Text = Table(1, (i - 4))
With oPicture
.ZOrder msoBringInFrontOfText
End With
Set oPicture = oSl.Shapes.AddTextbox(msoTextOrientationHorizontal, _
Left:=TBLeft2, Top:=TBTop2, _
Width:=TBWidth2, Height:=TBHeight2)
oPicture.TextFrame.TextRange.Text = Table(2, (i - 4))
With oPicture
.ZOrder msoBringInFrontOfText
End With
Next i
解决方案
Table
是一维数组:
在这条线上Table(j, i - 4)
,你正在使用它,就好像它是一个多维的。
尝试像这个一样小的东西来理解含义:
Option Explicit
Public Sub TestMe()
Dim i As Long, j As Long
For i = 5 To 9
Dim inputArray As Variant
Dim Table As Variant
inputArray = Array(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9)
For j = 0 To 1
Table = Array(j, i - 4)
Table(j) = inputArray(i - 4)
Debug.Print Table(j)
Next j
Next i
End Sub
推荐阅读
- python-3.x - AttributeError:“SQLAlchemy”对象没有属性“整数”
- elasticsearch - 如何在 ElasticSearch 中应用过滤某些值的后置过滤器?
- java - 我想从链接下载文件
- java - 在 JBoss7.1 中使用 resource-ref 时未安装的所需服务
- javascript - 2021 年使用的 IFrame 是什么?
- r - 调整雷达图 (fmsb) 上的轴标签
- vue.js - Vue2:当测试包含功能性子组件的组件时,如何从子组件发出事件?
- excel - 对底层类实例的引用
- php - 通过简码 WordPress 将自定义文本添加到联系表 7
- c# - 无法解析类型“Microsoft.Extensions.Logging.ILogger`1[WebApplication1.Startup]”的服务