当多选框被多个选中则随机选择一个执行,这个怎么写!

这个是在贴吧上面看到的一个求助帖子,问的问题比较有意思,平时我们很少这么用,所以拿来和大家分享一下,你可以先自己想想怎么来实现这个操作,然后在看我的思路。

当我们用到随机操作的时候,首先想到的就是随机数,怎么用随机数和要执行的功能产生联系?

本次案例中是界面的多选框,想了一下多选框的命名是可以用多选框+序号的,然后序号是数字就可以和随机数有联系了,初步的思路就是这样的。

(一)这里有12个多选框,那么对于数量比较多的相同内容,我们是可以用循环获取的。


For i = 1 To 12
  traceprint ReadUIConfig("多选框"&i)
Next

(二)要获取哪几个多选框是被选中的,加一步判断,然后调试输出i


For i = 1 To 12
If ReadUIConfig("多选框" & i) Then 
    TracePrint i
End If
Next

(三)把被选中的多选框序号写入数组,这里我预先定义一个数组arr,然后通过变量n作为数组下标。

Dim arr=array()
Dim n=0
For i = 1 To 12
If ReadUIConfig("多选框" & i) Then 
arr(n) = i
n=n+1
End If
Next

For Each k In arr
TracePrint k
Next

为了确定数组arr有内容存在,这里又用循环把数组内容读取了一遍,一会儿可以删除了。

(四)获取随机数,随机的范围是0到数组最大下标


Dim sj=int((ubound(arr)+1)*rnd())

(五)用随机数作为数组下标,从数组中随机获取一个多选框的序号。


TracePrint "随机选中的多选框是"&arr(sj)

(六)执行对应的功能,需要注意的是,此时读取多选框的值,已经不能作为控制对于操作的开关,这里要使用到多选框序号作为控制开关。


If arr(sj) = 1 Then 
    TracePrint "1号任务"
ElseIf arr(sj) = 2 Then
    TracePrint "2号任务"
ElseIf arr(sj) = 3 Then
    TracePrint "3号任务"
ElseIf arr(sj) = 4 Then
    TracePrint "4号任务"
ElseIf arr(sj) = 5 Then
    TracePrint "5号任务"
ElseIf arr(sj) =6 Then
    TracePrint "6号任务"
ElseIf arr(sj) = 7 Then
    TracePrint "7号任务"
ElseIf arr(sj) = 8 Then
    TracePrint "8号任务"
ElseIf arr(sj) = 9 Then
    TracePrint "9号任务"
ElseIf arr(sj) = 10 Then
    TracePrint "10号任务"
ElseIf arr(sj) = 11 Then
    TracePrint "11号任务"
ElseIf arr(sj) = 12 Then
    TracePrint "12号任务"
End If

完整代码如下:


Dim arr=array()
Dim n=0
For i = 1 To 12
    If ReadUIConfig("多选框" & i) Then 
        arr(n) = i
        n=n+1
End If
Next

For Each k In arr
    TracePrint k
Next


Dim sj=int((ubound(arr)+1)*rnd())
TracePrint "随机选中的多选框是"&arr(sj)


If arr(sj) = 1 Then
    TracePrint "1号任务"
ElseIf arr(sj) = 2 Then
    TracePrint "2号任务"
ElseIf arr(sj) = 3 Then
    TracePrint "3号任务"
ElseIf arr(sj) = 4 Then
    TracePrint "4号任务"
ElseIf arr(sj) = 5 Then
    TracePrint "5号任务"
ElseIf arr(sj) =6 Then
    TracePrint "6号任务"
ElseIf arr(sj) = 7 Then
    TracePrint "7号任务"
ElseIf arr(sj) = 8 Then
    TracePrint "8号任务"
ElseIf arr(sj) = 9 Then
    TracePrint "9号任务"
ElseIf arr(sj) = 10 Then
    TracePrint "10号任务"
ElseIf arr(sj) = 11 Then
    TracePrint "11号任务"
ElseIf arr(sj) = 12 Then
    TracePrint "12号任务"
End If

这个脚本所涉及的命令很简单,但是编写逻辑值得好好思考。

转载自微信公众号:3分钟学堂

除特别注明外,本站文章均为原创,转载请注明出处和链接!
本文链接地址: https://pumpkinit.com/1135.html
Pumpkin  [https://pumpkinit.com]  感谢

发表评论

电子邮件地址不会被公开。 必填项已用*标注