Excel VBA-运行时错误'9',下标超出范围

谦卑的瓦尔

我真的很感谢我能为此提供的任何帮助。

我正在尝试遍历一列以查找重复的名称,然后从同一行中获取该名称和其他一些数据,并将它们放入要使用其他功能的2D数组中,但是它不起作用。

我真的需要您的帮助,弄清楚为什么我不保存数据就无法重新数组化。

Dim oRange As Range, aCell As Range, bCell As Range
Dim ws As Worksheet
Dim SearchString As String, FoundAt As String
Dim tArray() As Variant
Dim iR As Long
Dim LastRow As Long
Dim LastCol As Long

'name of the worksheet
Set ws = Worksheets("VML Daily")

'column 6 has a huge list of names
Set oRange = ws.Columns(6)

'the keyword (there are 7 'ABC Company 1' in the column above)
SearchString = "ABC Company 1"

'Find keyword in column
Set aCell = oRange.Find(What:=SearchString, LookIn:=xlValues, _
            LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False)

'find last row and column number
LastRow = Range("A1").End(xlDown).Row

'redimensioning based on maximum rows
ReDim Preserve tArray(1 To LastRow, 1 To 3) As Variant

'if search finds something
If Not aCell Is Nothing Then
    Set bCell = aCell
    FoundAt = aCell.Address
    iR = 1

    tArray(1, 1) = aCell
    tArray(1, 2) = aCell.Offset(0, 33)
    tArray(1, 3) = aCell.Offset(0, 38)

    'continue finding stuff until end
    Do
        Set aCell = oRange.FindNext(After:=aCell)

        If Not aCell Is Nothing Then
            If aCell.Address = bCell.Address Then Exit Do
            FoundAt = FoundAt & ", " & aCell.Address
            tArray(iR, 1) = aCell
            tArray(iR, 2) = aCell.Offset(0, 33)
            tArray(iR, 3) = aCell.Offset(0, 38)
            iR = iR + 1
        Else
            Exit Do
        End If
    Loop

    'redim'ing the array to the amount of hits I found above and preserve the data
    'Here's where it error's out as "Subscript out of range"
    ReDim Preserve tArray(1 To iR, 1 To 3) As Variant
Else
    MsgBox SearchString & " not Found"
    Exit Sub
End If
丹尼尔

您的第二个Redim不起作用,因为您无法执行任何操作。

来自:Excel VBA-如何重新设置2D数组?

重新定义多维数组时,如果要保留值,则只能增加最后一个维。

在调用数组的同时更改数组的第一个元素Preserve总是会导致下标超出范围错误。

Sub Example()
    Dim val() As Variant
    ReDim val(1 To 2, 1 To 3)
    ReDim Preserve val(1 To 2, 1 To 4) 'Fine
    ReDim Preserve val(1 To 2, 1 To 2) 'also Fine
    ReDim Preserve val(1 To 3, 1 To 3) 'Throws error
    ReDim Preserve val(1 To 1, 1 To 3) 'Also throws error
End Sub

编辑:由于您实际上并未更改最后一个尺寸,因此可以通过交换要更改的尺寸来简单地修改代码。

例如:

ReDim Preserve tArray(1 To LastRow, 1 To 3) As Variant

ReDim Preserve tArray(1 To iR, 1 To 3) As Variant

成为

ReDim Preserve tArray(1 To 3, 1 To LastRow) As Variant

ReDim Preserve tArray(1 To 3, 1 To iR) As Variant

您只需要交换您在每次通话中使用的号码,即可正常使用。像这样:

tArray(1, iR) = aCell
tArray(2, iR) = aCell.Offset(0, 33)
tArray(3, iR) = aCell.Offset(0, 38)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Excel VBA无法修复运行时错误“ 9”:下标超出范围

来自分类Dev

Excel 2013 VBA:下标超出范围(错误9)

来自分类Dev

VBA/Excel:“下标超出范围”错误

来自分类Dev

运行时错误:Excel 宏 2016 中的“9”下标超出范围

来自分类Dev

下标超出范围运行时错误9

来自分类Dev

运行时错误9-下标超出范围

来自分类Dev

运行时错误“ 9”:下标超出范围

来自分类Dev

vba错误编号9下标超出范围

来自分类Dev

VBA下标超出范围和错误9

来自分类Dev

VBA中ReDim的下标超出范围(错误9)

来自分类Dev

VBA下标超出范围-错误9故障

来自分类Dev

vba中的下标超出范围(错误9)

来自分类Dev

此Excel VBA脚本中的下标超出范围错误

来自分类Dev

VBA 错误:运行时错误:9 - 从另一个工作簿复制工作表时下标超出范围

来自分类Dev

VBA下标超出范围,代码9

来自分类Dev

VBA运行时错误9:下标超出范围,无法将相似的工作表转换为文本文件

来自分类Dev

下标超出范围VBA Excel数组

来自分类Dev

运行时错误“9”VBA 子脚本超出范围

来自分类Dev

错误9:下标超出范围

来自分类Dev

(下标超出范围)错误9

来自分类Dev

下标超出范围(错误9)

来自分类Dev

Windows.Activate-运行时错误'9':下标超出范围-使用通配符“ *”时

来自分类Dev

处理运行时错误'9':在工作表上迭代时下标超出范围

来自分类Dev

选择工作表:运行时错误“9”:下标超出范围

来自分类Dev

Excel VBA - .xlam (AddIn) 抛出下标超出范围错误 9 但一切都像 xlsm 一样?

来自分类Dev

复制工作表时,VBA错误'9'下标超出范围

来自分类Dev

VBA-下标超出范围错误导致Excel崩溃

来自分类Dev

具有下标超出范围错误的Excel VBA剪切和粘贴功能

来自分类Dev

运行时错误'9':下标超出了WorksheetFunction的范围

Related 相关文章

  1. 1

    Excel VBA无法修复运行时错误“ 9”:下标超出范围

  2. 2

    Excel 2013 VBA:下标超出范围(错误9)

  3. 3

    VBA/Excel:“下标超出范围”错误

  4. 4

    运行时错误:Excel 宏 2016 中的“9”下标超出范围

  5. 5

    下标超出范围运行时错误9

  6. 6

    运行时错误9-下标超出范围

  7. 7

    运行时错误“ 9”:下标超出范围

  8. 8

    vba错误编号9下标超出范围

  9. 9

    VBA下标超出范围和错误9

  10. 10

    VBA中ReDim的下标超出范围(错误9)

  11. 11

    VBA下标超出范围-错误9故障

  12. 12

    vba中的下标超出范围(错误9)

  13. 13

    此Excel VBA脚本中的下标超出范围错误

  14. 14

    VBA 错误:运行时错误:9 - 从另一个工作簿复制工作表时下标超出范围

  15. 15

    VBA下标超出范围,代码9

  16. 16

    VBA运行时错误9:下标超出范围,无法将相似的工作表转换为文本文件

  17. 17

    下标超出范围VBA Excel数组

  18. 18

    运行时错误“9”VBA 子脚本超出范围

  19. 19

    错误9:下标超出范围

  20. 20

    (下标超出范围)错误9

  21. 21

    下标超出范围(错误9)

  22. 22

    Windows.Activate-运行时错误'9':下标超出范围-使用通配符“ *”时

  23. 23

    处理运行时错误'9':在工作表上迭代时下标超出范围

  24. 24

    选择工作表:运行时错误“9”:下标超出范围

  25. 25

    Excel VBA - .xlam (AddIn) 抛出下标超出范围错误 9 但一切都像 xlsm 一样?

  26. 26

    复制工作表时,VBA错误'9'下标超出范围

  27. 27

    VBA-下标超出范围错误导致Excel崩溃

  28. 28

    具有下标超出范围错误的Excel VBA剪切和粘贴功能

  29. 29

    运行时错误'9':下标超出了WorksheetFunction的范围

热门标签

归档