VBA宏的问题

做了一个满足条件即导入数据的VBA宏:工作过程是,一个工作簿中的3个工作表(jxrwb、kstj,sheet1),通过网上查的代码,jxrwb中每一行的数据如果满足sheet1表中C5单元格条件值(关键词),就将该行数据导入kstj这个表中,jxrwb有19行数据,但是每次只能导入14行数据,为什么不是19行数据?

Sub 导入初始数据()
If MsgBox("确定要恢复数据吗 ?即将为您恢复备份时间为:" & Sheets("KSTJ").Range("l4") & " 的数据到当前表格! 请注意:恢复数据前会自动清空本表原来数据!", vbYesNo) = vbYes Then

Range("A7:s500").Select
Selection.ClearContents
Range("A7").Select

On Error Resume Next
Dim i As Integer, brr(), j As Integer, arr
j = Sheets("jxrwb").Range("a65536").End(xlUp).Row
arr = Sheets("jxrwb").Range("a2:n" & j)
k = k + UBound(arr)
ReDim Preserve brr(1 To 19, 1 To k)
For i = 1 To UBound(arr)
If arr(i, 2) Like Sheet1.Range("c5") Then
n = n + 1
brr(1, n) = arr(i, 1)
brr(2, n) = arr(i, 2)
brr(3, n) = arr(i, 3)
brr(4, n) = arr(i, 4)
brr(5, n) = arr(i, 5)
brr(6, n) = arr(i, 6)
brr(7, n) = arr(i, 7)
brr(8, n) = arr(i, 8)
brr(9, n) = arr(i, 9)
brr(10, n) = arr(i, 10)
brr(11, n) = arr(i, 11)
brr(12, n) = arr(i, 12)
brr(13, n) = arr(i, 13)
brr(14, n) = arr(i, 14)
brr(15, n) = arr(i, 15)
brr(16, n) = arr(i, 16)
brr(17, n) = arr(i, 17)
brr(18, n) = arr(i, 18)
brr(19, n) = arr(i, 19)

End If
Next

Sheets("KSTJ").Range("a7").Resize(n, 19) = Application.WorksheetFunction.Transpose(brr)
MsgBox " 数据恢复成功!"
Else
End If
End Sub

这段代码写的过于啰嗦了,需要好好精简一下。
出问题的点可能有二:
Sheets("KSTJ").Range("a7").Resize(n, 19) =Application.WorksheetFunction.Transpose(brr)
改成:Sheets("KSTJ").Range("a7").Resize(19, n) = Application.WorksheetFunction.Transpose(brr)或者brr
还有一点是可能符合条件的行数确实只有14行呢,可以检查一下。
其余得看你具体数据了追问

不好意思我写错了,是14列,只能导入14列数据

追答

那你检查一下n和k的值,可能这两个变量只循环到了14

追问

从代码上看,真不知道为什么N和K为什么只循环到14?

追答

arr = Sheets("jxrwb").Range("a2:n" & j)
改成:
arr = Sheets("jxrwb").Range("a2:S" & j)

追问

太感谢!就是你说的那个问题,问题解决了!就是那个N,我把他看成我上面标的N了,晕死!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-11-16

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网