excel - 使用 ListObjects 将命名范围分配给数组时如何修复下标超出范围错误?
问题描述
我正在尝试将电子表格中的命名范围分配给数组。我想将相同的数组值粘贴到其他地方。命名范围表有 3 列和 59 行,但我希望行是动态的。
我尝试了其他更简单的方法将其分配给数组,但我的重点是使用 ReDim 数组并使用 ListObjects 和 ListRow 对象来完成这个动态数组。
Dim vArray() As Variant
ReDim vArray(3, Worksheets("Sheet2").ListObjects("tblprices").ListRows.Count)
vArray = Worksheets("Sheet2").ListObjects("tblprices").DataBodyRange.Value
Range("F1").Select
Range("F:H").Value = vArray
应将数组复制到数组中并粘贴到目标位置。如果有人可以建议如何有效地粘贴,那也会有所帮助。谢谢。
解决方案
您只需复制表格并将其粘贴到从单元格 F1 开始的连续范围内。即使列数和/或行数发生变化,这也会起作用。
Dim vArray() As Variant, nRows As Long, nCols As Long
With ThisWorkbook.Worksheets("Sheet2")
nCols = .ListObjects("tblprices").ListColumns.Count
nRows = .ListObjects("tblprices").ListRows.Count
vArray() = .ListObjects("tblprices").Range.Value
.Range(.Cells(1, 6), .Cells(nRows+1, 6+nCols-1)).Value = vArray
End With
推荐阅读
- javascript - 如何在网址后不包含标点符号
- c# - VS2017 Web应用CORS:Access-Control-Allow-Origin
- matplotlib - 如何增加 Seaborn 热图中注释的单元格大小
- r - 工作日的最近值作为新列
- php - 表单问题的php验证
- python - 打印日志时出现 Python 数组问题
- image - Docker,如何知道某个docker镜像有什么服务?
- google-calendar-api - 谷歌日历 API 中的 calendarId、eventId 是否与 android 提供程序 API 相同?
- c++ - 在用户插入的字符串的每个元音之后插入一对字符的 C++ 代码
- unity3d - 仅使用相机在 C# 中跟踪头部旋转