我需要在BlueZone中更新数千个X坐标。我正在使用VBA在BlueZone VT中输入关键命令。不幸的是,没有“设置光标位置”命令,因此我仅限于使用“制表符”将光标放在需要移动的位置。
在坐标更新屏幕上,有两种可能性:6或7个选项卡,取决于屏幕上是否存在0。
例如:位置241054的数字为1,需要7个标签;位置241051的数字为0,需要6个标签,以获取X位置字段,以便我将其转储到变量中。
这是我的代码:
Sub FiXCoord_Loop()
'Must start at IMLOA screen
Dim bzhao As Object
Set bzhao = CreateObject("BZWhll.WhllObj")
bzhao.Connect ""
Dim myX As Integer
Dim res_check As Integer
Dim myLoc As Variant
'Dim res_check As Variant
myRange = activeSheet.Range("A2:A1000")
'myResRange = activeSheet.Range("D3")
myX = activeSheet.Range("E1").Value
res_check = activeSheet.Range("D3").Value
For Each myLoc In myRange
'end loop at blank cell
If myLoc = "" Then
Exit For
End If
'Query location
bzhao.SendKey "Q"
bzhao.Wait 0.2
bzhao.SendKey myLoc
bzhao.Wait 0.2
bzhao.SendKey "<enter>"
bzhao.Wait 0.2
'Copy screen to get res#
bzhao.Wait 1
bzhao.Copy 32
bzhao.Wait 1
'Paste info to sheet for res_check
Range("J1").Select
activeSheet.Paste
bzhao.SendKey "M"
bzhao.Wait 0.2
bzhao.SendKey "<tab>"
bzhao.Wait 0.2
bzhao.SendKey "<tab>"
bzhao.Wait 0.2
bzhao.SendKey "<tab>"
bzhao.Wait 0.2
bzhao.SendKey "<tab>"
bzhao.Wait 0.2
bzhao.SendKey "<tab>"
'if value > 0 extra tab
If res_check > 0 Then
bzhao.SendKey "<tab>"
bzhao.Wait 1
bzhao.SendKey "<tab>"
bzhao.Wait 1
bzhao.SendKey myX
bzhao.Wait 0.2
bzhao.SendKey "<enter>"
bzhao.Wait 0.2
bzhao.SendKey "E"
bzhao.Wait 0.5
Else
bzhao.Wait 0.2
bzhao.SendKey "<tab>"
bzhao.Wait 1
bzhao.SendKey myX
bzhao.Wait 0.2
bzhao.SendKey "<enter>"
bzhao.Wait 0.2
bzhao.SendKey "E"
bzhao.Wait 0.5
End If
Next myLoc
End Sub
由于我只能通过键盘命令在屏幕上移动,因此我正在复制屏幕并将其粘贴到工作表上以检查是否为0。但是,我无法获得if-then语句。
代码仅使用6个选项卡运行,这告诉我要么无法识别res_check值(这是将值拉出屏幕的mid()语句),要么变量未随环。但是,如果我先运行res_check> 0位置,它仍然会显示6个标签,因此我可以消除这种可能性。
作为进一步的检查,我对res_check值进行了TRUE FALSE检查,并在将其调为整数时通过。但是,在工作表上,IsnUMber()失败。