VBA工作簿超出范围 - 下标错误

时间:2017-10-27 10:42:40

标签: excel vba excel-vba

我得到了

  

下标超出范围

将数组和工作簿传递给此函数时出现

错误。有人能看出它有什么问题吗?

- 更新 -

Private Function PasteFunction(cd As Variant, wk As Workbook) As Boolean

Dim bool As Boolean, row As Integer, col As Integer
bool = False
col = 1
row = 3


Do While bool = False
MsgBox row
MsgBox col
    If IsEmpty(wk.Sheets("Sheet1").Cells(row, col)) = True Then
        For col = 1 To 81
            wk.Sheets("Sheet1").Cells(row, col) = cd(col)
        Next col
        bool = True

    Else
        row = row + 1
    End If
    Loop

End Function

3 个答案:

答案 0 :(得分:0)

此行产生错误:

If IsEmpty(wk.Sheets("Sheet1").Range(col & row)) = True Then

Range (col&row)返回类似Range(1223)的内容,并且等待Range("A12:A53")等值。

判断你的代码,逻辑应该是这样的:

Cells(row, col)代替Range(col & row)

答案 1 :(得分:0)

下标超出范围错误可能是由于对工作簿或工作表引用的错误引用,也可能是因为您的数组cd短于81项。你怎么称呼你的功能。你可以发布你的函数调用。工作簿路径可能不正确也检查拼写错误

答案 2 :(得分:0)

如果cd有81个元素,那么它们从cd(0)运行到cd(80) 如果您想将它们放入第1列到第81列,您需要

   For col = 1 To 81
        wk.Sheets("Sheet1").Cells(row, col) = cd(col-1)
    Next col