各位大神,我是VBA入门级菜鸟,我就是想从913条数据中随机选取其中60%,并复制到另外一张Sheet里。请大神帮我看一下为什么我的代码运行不成。系统提示,问题出在
n = Sheet2.Cells(n, "A").Value
这一行上。
下面是我自己的代码:
Option Explicit
Sub Random60()
Dim RndNumber, n, i, j, k, m, temp(547), Maxrec As Integer
n = Sheet2.Cells(n, "A").Value
Randomize (Timer)
Maxrec = 912
k = 0
Do While k < Maxrec * 0.6
RndNumber = Int((Maxrec * Rnd) + 1)
temp(k) = RndNumber
For i = 0 To k - 1
If temp(i) = RndNumber Then Exit For
Next i
If i = k Then k = i + 1
Loop
For n = 1 To 912
If n = RndNumber Then
Sheet2.Rows(n).CopySheet4.Rows (k + 1)
Next
End Sub
n = Sheet2.Cells(n, "A").Value,只是想将单元A列n行的值取出放到变量n中,然后这个n也再用。所以这行在程序中没有任何用处。
变量n也没有初始值,在后面的FOR语句循环中却重新进行了赋值。
所以我觉得此句可以删除。
n = Sheet2.Cells(n, "A").Value 这行代码没有什么用
不管n = Sheet2.Cells(n, "A").Value有没有用,首先n的初始值为0,cells(0,"A")是指A0单元格,excel中的单元格中没有此格,所以报错。如果不删这行还要忽略它,你在这行前面加一句 on error resume next 应该可以了。