arrays - 在整个数组上执行 range(array(x)) 而不是逐个元素
问题描述
我正在编写一个宏,它将获取一个不断变化的数字列表(放置在一个数组中),从一个 powerpoint 复制等效的幻灯片,然后将选定的幻灯片粘贴到另一个 powerpoint 中(所以如果数字是 2、5 和 7 ,宏将复制/粘贴幻灯片 2、5 和 7)。我可以让它与单个数组元素一起工作,但无法弄清楚如何一次将所有数组元素传递到选择中。这些是相关的代码行:
Dim NumberList() As Variant
NumberList= Range("A11", Range("A10").End(xlDown))
OriginalPowerpoint.Slides.Range(Array(NumberList(1, 1), NumberList(3, 1))).Copy
'this is the line I'm having trouble with
NewPowerpoint.Slides.Paste -1
上面的代码确实有效,但我想将整个 NumberList 传递到第三行的 Array() 中,而不是 NumberList(1,1) 和 NumberList(3,1) 的当前样本。仅输入“NumberList”或“NumberList()”是行不通的,出于效率原因,我真的很想避免将其设为循环。任何建议将不胜感激。
解决方案
PowerPoint 幻灯片阵列壮举“write1D”
如果您发布的示例有效,这应该可以解决问题(未经测试)。
Option Explicit
Sub PowerP()
Dim NumberList As Variant
NumberList = Range("A11", Range("A11").End(xlDown))
NumberList = write1D(NumberList)
OriginalPowerpoint.Slides(NumberList).Copy
End Sub
Function write1D(ColumnArray As Variant, _
Optional ColumnIndex As Long = 1) As Variant
Dim Source As Variant, i As Long
ReDim Source(UBound(ColumnArray) - LBound(ColumnArray))
For i = LBound(ColumnArray) To UBound(ColumnArray)
Source(i - LBound(ColumnArray)) _
= ColumnArray(i, LBound(ColumnArray, 2) + ColumnIndex - 1)
Next i
write1D = Source
End Function
推荐阅读
- java - 在下载完成之前显示进度条 - Android
- macros - __impl 在宏模式中的意义是什么?
- javascript - 过滤 2 个数组以在 React/JSX 中呈现一个值
- ios - 面料在 XCTest 上产生一些错误
- git - 如何使用“$ git commit”在消息开头引用问题(gitlab,github)?
- reactjs - Saga 观察者没有接收或处理分派的动作
- php - 正则表达式(PHP):避免捕获某个单词列表
- r - 防止 RStudio 中 kableExtra::kable_styling() 的长 html 输出
- javascript - 等待函数完成运行下一个
- c# - Xamarin.Forms 中的导航不起作用