学习VBA编程
Private Declare Sub Sleep Lib "Kernel32" (ByVal dwMilliseconds As Long)
Sub Macro1()
'
' Macro1 Macro
'
Dim VarValue1, VarValue2 As String
Dim varMaxcolcount, varMaxrowcount, varIsMoveUp, varNowcol, varNowrow, i, Varcolor1, Varcolor2, varIsMoveLeft, VarIsUp As Integer
Dim varFromCell, varToCell As Object
varMaxrowcount = ActiveSheet.UsedRange.Rows.Count
varMaxcolcount = ActiveSheet.UsedRange.Columns.Count
'VarIsUp=1则上下交换,否则左右交换
VarIsUp = 1
'只移动10次,次数可以修改,自己修改,改成1则只移动一次
For i = 1 To 10
varNowcol = Fix(Rnd() * varMaxcolcount) + 1
varNowrow = Fix(Rnd() * varMaxrowcount) + 1
Set varFromCell = ActiveSheet.Cells(varNowrow, varNowcol)
'随机上下移动或者左右移动
If Fix(Rnd() * 10) Mod 2 = 0 Then
VarIsUp = 1
Else
VarIsUp = 0
End If
If VarIsUp = 1 Then
Select Case varNowrow
Case 1
varIsMoveUp = 1
Case varMaxrowcount
varIsMoveUp = 0
Case Else
If Fix(Rnd() * 10) Mod 2 = 0 Then
varIsMoveUp = 1
Else
varIsMoveUp = 0
End If
End Select
If varIsMoveUp = 1 Then
varNowrow = varNowrow + 1
Else
varNowrow = varNowrow - 1
End If
Else
Select Case varNowcol
Case 1
varIsMoveLeft = 1
Case varMaxcolcount
varIsMoveLeft = 0
Case Else
If Fix(Rnd() * 10) Mod 2 = 0 Then
varIsMoveLeft = 1
Else
varIsMoveLeft = 0
End If
End Select
If varIsMoveLeft = 1 Then
varNowcol = varNowcol + 1
Else
varNowcol = varNowcol - 1
End If
End If
Set varToCell = ActiveSheet.Cells(varNowrow, varNowcol)
'waitTime = TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + 1)
'Application.Wait waitTime
'此处暂停0.1秒
Sleep (1000)
VarValue1 = varFromCell.Value
VarValue2 = varToCell.Value
Varcolor1 = varFromCell.Font.Color
Varcolor2 = varToCell.Font.Color
varToCell.Value = VarValue1
varFromCell.Value = VarValue2
varToCell.Font.Color = Varcolor1
varFromCell.Font.Color = Varcolor2
Next i
End Sub
&spm=1001.2101.3001.5002&articleId=123793475&d=1&t=3&u=ebba128389184453a08ba5e658271660)

被折叠的 条评论
为什么被折叠?



