【发布时间】:2019-11-30 00:21:20
【问题描述】:
当我运行以下代码时,我无法将“数量”传递给 BlueZone。它将在循环中使用 SendKey 成功传递每个变量“过道”。我测试了活动工作表上的输出,并获得了基于 myRange.Offset(0,n) 的值。
我有一个要循环的 n x 4 数组。我需要为每次迭代传递一组不同的变量。
我的结构错了吗?
BlueZone 是终端仿真。
Sub Grooming1()
Dim bzhao As Object
Set bzhao = CreateObject("BZWhll.WhllObj")
bzhao.Connect ""
Dim aisle As Variant
Dim Qty As Variant
Dim LDAP As Variant
Dim Priority As Variant
Set myRange = ActiveSheet.Range("A2:A1000")
'Set myQty = ActiveSheet.Range("B2:B1000")
'Set myLDAP = ActiveSheet.Range("C2:C1000")
'Set myPriority = ActiveSheet.Range("D2:D1000")
For Each aisle In myRange
Set Qty = myRange.Offset(0, 1)
Set LDAP = myRange.Offset(0, 2)
Set Priority = myRange.Offset(0, 3)
'end loop at blank cell
If aisle = "" Then
Exit For
End If
bzhao.SendKey "<PF3>"
bzhao.Wait 0.5
bzhao.SendKey Qty '<---ERROR
bzhao.Wait 0.5
'ActiveSheet.Range("F2") = Qty
'ActiveSheet.Range("F3") = LDAP
'ActiveSheet.Range("F4") = Priority
'ActiveSheet.Range("F5") = aisle
Next aisle
End Sub
【问题讨论】:
-
我从未听说过“bluezone”,也不知道“BZWhll.WhllObj”是什么。我怀疑很多阅读这个问题的人会知道那是什么。如果您提供一些上下文,包括相关文档的链接,它可能会有所帮助。您使用
SendKey的事实并不令人鼓舞。这几乎是不可能可靠调试的。这是一个本质上不透明的命令。从我们的角度来看,一个未知的窗口正在接收未知的数据,并且没有按照您未说明的期望工作。 -
@jpcoleman SendKey 当然不理想,但它是我必须走模拟器的唯一选择。我认为我的期望很明确 - 我的变量 Qty 没有通过。谢谢阅读;我添加了有关该对象的更多细节。
-
Qty是字符串吗?您收到的错误是什么?myRange.Offset(0, 1)的值是多少?你沉浸在问题的细节中。其他人可能不知道您要做什么。请提供minimal reproducible example。 -
@jpcoleman Qty 是一个整数,myRange.Offset(0,1) 的第一行是10。
-
@jpcoleman 明白 - 完成!