|
Cqy131 发表于 2014-6-25 21:37
楼主你的代码简直就是录制宏好不好,该好好优化一下才对。
Sub 随机PK()
m = Cells(2, 4).Value
n = Cells(2, 6).Value
Cells(2, 4).Select
ActiveCell.FormulaR1C1 = "=INT(RAND()*(COUNTA(C[-3])-1)+2)"
Cells(2, 6).Select
ActiveCell.FormulaR1C1 = "=INT(RAND()*(COUNTA(C[2])-1)+2)"
Range(Cells(2, 4), Cells(2, 6)).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'以上使用工作表函数,而且还是输入公式后在把计算结果赋值粘贴为值……这个太落后!不值得学习。
Application.CutCopyMode = False
Cells(13, 4).Select
If Cells(m, 3).Value And Cells(n, 10) = "" Then
Exit Sub
If Cells(m, 3).Value Or Cells(n, 10) <> "" Then
For i = 1 To 1000
Cells(2, 4).Select
ActiveCell.FormulaR1C1 = "=INT(RAND()*(COUNTA(C[-3])-1)+2)"
Cells(2, 6).Select
ActiveCell.FormulaR1C1 = "=INT(RAND()*(COUNTA(C[2])-1)+2)"
Range(Cells(2, 4), Cells(2, 6)).Select
Selection.Copy '红色部分Select用法是效率极低的,也可以说是不正确的用法。
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False '红色部分都是多余的。这只是录制宏的水平!
Application.CutCopyMode = False
Cells(13, 4).Select
If Cells(m, 3).Value And Cells(n, 10) = "" Then
Exit Sub
End If
Next
End If
End If
'IF 结构不太会用,不会简化。楼主要好好学习!
Cells(13, 4).Select
End Sub |
|