1、VBA程序思路解读:(1)在时间显示里边,时、分、秒都含有冒号“:”间隔,如果晤液呶鹣随机生成时、分、秒之后再进行比对计算,显得比较复杂。(2)在时间里面,如果达不到24小时,其时间转换成的数值将会小于1,例如:在F2单元格里面输入公式=VALUE(E2),E2单元格里面的时间将会转换成数值,因此,在VBA程序里边也可以采用这种方式把时间转换成数值计算。
2、按下键盘上面的【Alt+F11】组合键调出VBA编辑器,或者点击【开发工具】、【Visual Basic】调出VBA编辑器。
3、在VBA编辑器上面插入代码模块,即:点击【插入】、【模块】。
4、在VBA模块的代码框里边输入以下程序代码,然后按下【F5】键运行程序。Sub Rn蟠校盯昂dTime()Dim i1, i2, i3, i4, i5, i6, i7, i8On Error Resume Next '忽略运行过程中可能出现的错误Set mysheet1 = ThisWorkbook.Worksheets("Sheet1") '定义工作表Sheet1i1 = CDate("13:30:00") '把时间转换成数值i2 = CDate("17:30:00")i3 = CDate("13:30:30") - CDate("13:30:00") '相差30s的数值i4 = 0 '中间变量,用于记录循环的次数i6 = i1 '先把起始时间赋给i6i8 = 1 '第几行Doi4 = i4 + 1 '循环次数累计i5 = Rnd() '生成的随机数i7 = i5 - i6 '生成的随机数与上一次值的差If i5 >= i1 And i5 <= i2 And i7 <= i3 And i7 > 0 Then '如果在指定的时间范围里面,则 i6 = i5 '把满足条件的i5的值赋给i6 i8 = i8 + 1 '从第二行开始 mysheet1.Cells(i8, 5) = i5 '把i5的值写到第5列对应的单元格里面End IfIf i4 > 5000000 Or i8 > 200 Then '如果循环次数超过500万次或生成的随机时间达到200个,则 Exit Do '退出Do循环End IfLoopmysheet1.Columns("E:E").NumberFormatLocal = "h:mm:ss;@" '把E列设置成时间格式End Sub
5、VBA程序函数解释说明:(1)CDate是把时间格式的字符转换成可以运算的数值,便于后续计算。(2)Rnd随机函数的取值范凿速钲挞围是大于等于0且小于1。(3)使用Do……Loop循环时,应当避免死循环的出现,可以在循环里边累计它的循环次数,达到指定的次数时强制退出Do循环。(4)随机生成的数值都是小数,所以,记得在程序里面把单元格设置成时间的格式,这样才能正确显示所需的随机时间。
6、回到Excel表格界面,将会看到随机生成的时间。