arrays - Array Redim Preserve 将列转置为多行错误下标超出范围错误
问题描述
我是这个论坛的新手,并且对 VBA 也有一些了解。我无法找出我当前使用的代码背后的错误。我正在尝试将列转换为多行。下面的示例数据: 示例数据:
我用于上述数据的代码:
Sub test()
Dim wsThis As Worksheet, wsThat As Worksheet
Dim vDB As Variant, vR() As Variant
Dim r As Long, i As Long, n As Long
Dim c As Integer, j As Integer, k As Integer
Set wsThis = Sheet5: Set wsThat = Sheet8
vdblast = wsThis.Range("A" & wsThis.Rows.Count).End(xlUp).Row
vDB = wsThis.Range("A1:CC" & vdblast)
vDB = wsThis.Range("a1").CurrentRegion
r = UBound(vDB, 1)
c = UBound(vDB, 2)
n = 1
For i = 2 To r
For j = 8 To c
If vDB(i, j) <> "" Then
n = n + 1
ReDim Preserve vR(1 To 9, 1 To n)
For k = 1 To 8
vR(k, n) = vDB(i, k)
Next k
End If
vR(9, n) = vDB(i, j)
Next j
Next i
With wsThat
.UsedRange.Clear
.Range("a1").Resize(1, 8) = wsThis.Range("a1").Resize(1, 9).Value
.Range("h1").Resize(1, 1) = Array("Activity Template")
.Range("a2").Resize(n, 8) = WorksheetFunction.Transpose(vR)
End With
End Sub
谢谢大家的帮助。
解决方案
数组 vDB 包含 Sheet5 的所有行和列,您可能有少于 8 列(k 1 到 8 的值)。
为了调试您的脚本,您可以使用 F8 逐步浏览您的代码,因为黄色标记会前进,当您用鼠标遍历您的变量时,您将能够在脚本的那一刻看到它们的值。
推荐阅读
- python - 如何向其中添加多个项目?
- python - pysnmp snmp 打印 OID 实际值
- python - Discord.py:将欢迎消息移动到另一个模块后无法发送欢迎消息
- android - XAMARIN 错误:在 android-sdk 上部署失败
- javascript - Vue Input 传递一个数组
- reactjs - 为什么我的减速器在我的 action.payload 中找不到值来在我的数组中进行过滤?
- javascript - 反应“if”中唯一的第一条消息
- java - spring 项目(来自 IDE 上的 spring initialzr 插件)是 Unloadable
- github - 如何更改多个存储库的监视设置?
- ionic-framework - 如何为自定义(vanilla Javascript)Ionic 应用程序设置“构建”脚本?