- 初中三年级
- 2220985
- 396
- 0
- 532 朵
- 2506 个
- 334 个
- 480
- 2013-10-27
|
1#
t
T
发表于 2014-10-24 14:59
|
|只看楼主
如何循环点击无规律的坐标呢? 需要点击的坐标点没有规律?怎么办呢?坐标值没有规律,我们就无法用变量代替它进行变化,那是不是意味着,我要点击10个点,就要重复写十行代码呢? 想让咱重复写代码?门儿都没有!锵锵锵,小编这里分享一个好用的方法,咱一起来看看~~ |
| 思路分析 1、 把我们要点击的坐标点都放到一个字符串变量中,例如:- 字符串 = "345,56>214,36>77,88>89,21>39,78>11,20>67,34>80,51>13,63"
复制代码 2、 写一个函数Sub StrToArr(字符串)用来转换分割字符串里的坐标。 咱们看这个字符串,它一共有9个坐标,分别用>这个符合分割开。 "345,56>214,36>77,88>89,21>39,78>11,20>67,34>80,51>13,63" 用split分割函数分割字符串,并且保存到数组arrx里:arrX = Split(字符串, ">") 3、 分割好字符串之后,arrx里存放的数据情况如下: arrx(0)=345,56 arrx(1)=214,36 arrx(2)=77,88 arrx(3)=89,21 arrx(4)=39,78 arrx(5)=11,20 arrx(6)=67,34 arrx(7)=80,51 arrx(8)=13,63
4、 分割好字符串之后,arry里存放的数据情况如下: arrx(0)=345,56 分割之后 : arry(0)=345 arry(1)=56 arrx(1)=214,36 分割之后 : arry(0)=214 arry(1)=36 arrx(2)=77,88 分割之后 : arry(0)=77 arry(1)=88 arrx(3)=89,21 分割之后 : arry(0)=89 arry(1)=21 以此类推……
我们需要使用二维数组来记录: ArrMap(UBound(arrX),UBound(arrY)) ArrMap二维数组,第一维的元素个数 是分割 "> "这个符号的个数,即:坐标个数。 第二维的元素个数 是分割 ", "这个符号的个数,即:x坐标和y坐标
看表格更加直观:
分割 "> " arrX(0-8) | 分割 ", " arry(0) x坐标 | 分割 ", " arry(1) y坐标 | 345,56 | ArrMap(0,0) =345 | ArrMap(0,1) =56
| 214,36 | ArrMap(1,0) =214 | ArrMap(1,1) =36
| 77,88 | ArrMap(2,0) =77 | ArrMap(2,1) =88
| 89,21 | ArrMap(3,0) =89 | ArrMap(3,1) =21
| 39,78 | ArrMap(4,0) =39 | ArrMap(4,1) =78
| 11,20 | ArrMap(5,0) =11 | ArrMap(5,1) =20
| 67,34 | ArrMap(6,0) =67 | ArrMap(6,1) =34
| 80,51 | ArrMap(7,0) =80 | ArrMap(7,1) =51
| 13,63 | ArrMap(8,0) =13 | ArrMap(8,1) =63 |
5、 调用Sub StrToArr(字符串) 分割坐标,循环点击坐标点。 |
代码- 字符串 = "345,56>214,36>77,88>89,21>39,78>11,20>67,34>80,51>13,63"
- Call StrToArr(字符串)
- For i = 0 To UBound(ArrMap, 1)
- MoveTo arrmap(i, 0), arrmap(i, 1)
- TracePrint arrmap(i, 0)& ","&arrmap(i, 1)
- LeftClick 1
- Next
- Sub StrToArr(字符串)
- Dim i, j, arrX, arrY
- arrX = Split(字符串, ">")
- For i = 0 To UBound(arrX)
- arrY = Split(arrX(i), ",")
- For j = 0 To UBound(arrY)
- If j = 0 and i = 0 Then
- Redim ArrMap(UBound(arrX),UBound(arrY))
- End If
- ArrMap(i, j) = arrY(j)
- next
- Next
- End Sub
复制代码 注意: If j = 0 and i = 0 Then Redim ArrMap(UBound(arrX),UBound(arrY)) End If 这里为什么要在j和i都等于0的时候,定义数组ArrMap的维数和元素个数呢? 因为当j=0 and i=0 的时候,循环才刚刚开始,而二维数组必须要定义才能使用,所以我们需要在循环开始的时候定义,并且,只定义一次。
| 方法二- 字符串 = "345,56>214,36>77,88>89,21>39,78>11,20>67,34>80,51>13,63"
- 坐标 = Split(字符串, ">")
- For i = 0 To UBound(坐标)
- Execute "MoveTo " & 坐标(i)
- MsgBox 坐标(i)
- Next
复制代码 这里使用了vbs的 Execute语句 :执行一个或多个指定的语句。 将Moveto 坐标(i) 直接转换为可执行语句, 是一种简单 暴-力的解决方法,大赞! 特别感谢 神梦科技 童鞋无私的分享了这个方法,鼓掌~~如果童鞋们对于本帖里的内容有疑问或者建议,欢迎跟帖讨论~~- 您所在的用户组无法下载或查看附件
本文由按键学院提供技术支持 2个月学会赚大钱的脚本 按键学院10月实战班卷土来袭
|