gpt4 book ai didi

vba - 下标超出范围,即使值已定义

转载 作者:行者123 更新时间:2023-12-04 20:47:26 25 4
gpt4 key购买 nike

我正在编写一段代码,将 Excel 工作表上的选定数据传输到一个数组中,然后用于在新的电子表格上打印数据。但是,我收到“下标超出范围”错误,即使在我滚动 selectArr(i - 1) 时出现了一个值。这是我的代码:

Sub Marascuilo()
Dim numRows As Integer 'Number of rows selected
numRows = Selection.Rows.Count
Dim selectArr() As Double 'Array containing numbers from selected cells
selectArr = loadArr(numRows) 'Load values into array
For i = 2 To UBound(selectArr) - LBound(selectArr) + 2
Sheets("Sheet 4").Cells(i, 2).Value = selectArr(i - 1)
Next
End Sub

'This function loads the values from the selected cells into selectArr.
Function loadArr(numRows) As Double()
Dim ResultArray() As Double
r = 1
For Each v In Selection
ReDim Preserve ResultArray(1 To r)
If v <> "" Then
ResultArray(r) = v.Value
r = r + 1
End If
Next
loadArr = ResultArray
End Function

关于如何解决此问题的任何想法?

谢谢!

周杰伦

最佳答案

您可以考虑使用工作表的 CodeName,而不是使用 Sheets("Sheet 4")。如果您查看 Project Explorer 窗口,每个工作表都有一个 Name 和一个 CodeName。它可能看起来像这样

Sheet1 (Sheet1)
Sheet2 (Sheet2)

第一个是 CodeName(不能从 UI 更改)。括号中的一个是选项卡名称。在 Project Explorer 中选择工作表并按 F4 打开 Properties 对话框。转到 (Name) 属性(名称不佳的属性)并将其更改为有意义的内容。我更改了所有工作表的代码名称并使用 wsh 前缀。我作为日志的工作表的 CodeName 为
wshLog

现在我可以在我的代码中使用 wshLog 并获得一些好处。首先是如果有人在 UI 中重命名工作表,代码仍然有效。第二个是我可以输入 wshlog(全部小写),VBE 会将其更改为 wshLog,我会得到我拼写正确的视觉提示。最后,我的代码更具可读性,例如 wshFinalReport 与 Sheets("Sheet1")。

关于vba - 下标超出范围,即使值已定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10196087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com