Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 数组-下标超出范围错误-访问VBA_Excel_Vba - Fatal编程技术网

Excel 数组-下标超出范围错误-访问VBA

Excel 数组-下标超出范围错误-访问VBA,excel,vba,Excel,Vba,我不熟悉Access VBA中的编码。我试图运行以下代码从Access表中提取所选记录并将其导出到excel,但它不断向我显示“下标超出范围”错误。这是我遇到错误的代码部分。任何帮助都将不胜感激。多谢各位 Set db = CurrentDb() Set rec = db.OpenRecordset("Tablename", dbOpenDynaset) Dim k As Integer Dim n() As Variant Dim m() As Variant Dim p() As Var

我不熟悉Access VBA中的编码。我试图运行以下代码从Access表中提取所选记录并将其导出到excel,但它不断向我显示“下标超出范围”错误。这是我遇到错误的代码部分。任何帮助都将不胜感激。多谢各位

Set db = CurrentDb()
Set rec = db.OpenRecordset("Tablename", dbOpenDynaset)


Dim k As Integer
Dim n() As Variant
Dim m() As Variant
Dim p() As Variant
Dim q() As Variant
Dim size As Integer
k = 10
i = 1
If Not rec.EOF Then
rec.MoveFirst
rec.FindFirst ("Variable1 = '" & Me.Variable1.Value & "' AND Variable2 = " &       Me.Variable2.Value & " AND Variable3 = '" & Me.Variable3.Value & "'")
size = DCount("[Field4]", "Tablename", "Variable1 = '" & Me.Variable1.Value & "' AND Variable2 = " & Me.Variable2.Value & " AND Variable3 = '" & Me.Variable3.Value & "'")
ReDim n(size) As String
ReDim m(size) As String
ReDim p(size) As String
ReDim q(size) As String

Do Until rec.EOF



If Not IsNull(rec.Fields("Field4")) Then
n(i) = rec.Fields("Field4")
WKS.Cells((k), 1) = n(i)
End If

If Not IsNull(rec.Fields("Field3")) Then
m(i) = rec.Fields("Field3")
WKS.Cells((k), 2) = m(i)
End If

If Not IsNull(rec.Fields("Field2")) Then
p(i) = rec.Fields("Field2")
WKS.Cells((k), 3) = p(i)
End If

If Not IsNull(rec.Fields("Field1")) Then
q(i) = rec.Fields("Field1")
WKS.Cells((k), 4) = q(i)
End If

rec.MoveNext
    k = k + 1
    i = i + 1

Loop
End If
Set rec = Nothing

如何找到
size
?代码停止时它的值是多少?i和k从什么值开始?Size是保存“记录数”的变量,其中字段1的值是用户输入的变量1,依此类推。当代码停止时,它等于满足相等条件的记录数i从1开始,k从10开始。你打算对数组做些什么吗?我看到你分配了一个值,然后把这个值放到一个单元格里。如果您没有对数组执行操作,请跳过它并将值直接放入单元格。如何找到
size
?代码停止时它的值是多少?i和k从什么值开始?Size是保存“记录数”的变量,其中字段1的值是用户输入的变量1,依此类推。当代码停止时,它等于满足相等条件的记录数i从1开始,k从10开始。你打算对数组做些什么吗?我看到你分配了一个值,然后把这个值放到一个单元格里。如果您没有对数组执行操作,请跳过它并将值直接放入单元格中。