设置宏需要Ibm主机帮助 [英] Ibm mainframe help required to set macro

查看:94
本文介绍了设置宏需要Ibm主机帮助的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Sub Texas()
    
    Dim wks As Workbook
    Dim app As Object
    On Error Resume Next
    Dim i As Integer
    
    Sheets("TEXAS").Activate
    Range("A1:D1000000").ClearContents
    Set app = GetObject("RIBM")
    Set app = GetObject("RIBM")
   
    If Trim(app.getdisplaytext(1, 32, 26)) = "SM972 Main Panel" Then
    
    app.MoveCursor 21, 7
    app.TransmitANSI "1"
    app.TransmitTerminalKey 289
    Application.Wait (Now() + TimeSerial(0, 0, 1))
    
    
    app.MoveCursor 1, 1
    app.TransmitANSI "row1"
    app.TransmitTerminalKey 289
    Application.Wait (Now() + TimeSerial(0, 0, 1))
    
    app.MoveCursor 19, 31
    app.TransmitANSI "1"
    app.TransmitTerminalKey 289
    Application.Wait (Now() + TimeSerial(0, 0, 1))
    
    app.MoveCursor 20, 8
    app.TransmitANSI "1"
    app.TransmitTerminalKey 289
    Application.Wait (Now() + TimeSerial(0, 0, 1))
    
    
    
    
    
    
    Range("A2").Activate
    i = 3
    'Do Until Trim(app.getdisplaytext(i, 69, 10)) = "PAGE:    1"
    Do Until Trim(app.IsEmpty(i, 1, 11))"GETTING ERROR here
    'Do Until (app.IsEmpty(i, 20, 5))
    
    
    ActiveCell.Offset(0, 0).Value = Trim(app.getdisplaytext(i, 1, 11))
    ActiveCell.Offset(0, 1).Value = Trim(app.getdisplaytext(i, 4, 11))
    ActiveCell.Offset(0, 2).Value = Trim(app.getdisplaytext(i, 18, 5))
    ActiveCell.Offset(0, 3).Value = Trim(app.getdisplaytext(i, 41, 1))
    ActiveCell.Offset(0, 4).Value = Trim(app.getdisplaytext(i, 45, 7))
    
    
    i = i + 1
     i = 21 Then
    i = 3
    app.TransmitTerminalKey 385
    Application.Wait (Now() + TimeSerial(0, 0, 1))
    
    End If
    ActiveCell.Offset(1, 0).Select
    
    Loop
    
    Else
    MsgBox "Please goto SELECTION MENU Screen..."
    
    End If
    
    app.TransmitTerminalKey 380
    Application.Wait (Now() + TimeSerial(0, 0, 1))
    app.TransmitTerminalKey 380
    Application.Wait (Now() + TimeSerial(0, 0, 1))
    app.TransmitTerminalKey 380
    Application.Wait (Now() + TimeSerial(0, 0, 1))
    app.MoveCursor 1, 1
    app.TransmitANSI "ap"
    app.TransmitTerminalKey 289
    Application.Wait (Now() + TimeSerial(0, 0, 1))
End Sub





我尝试了什么:



i想要在范围为空时停止循环。



What I have tried:

i want to stop the loop when the range is blank.

推荐答案

正如你所提到的,你在这一行中有一个错误:

As you mentioned, you've got an error in this line:
Do Until Trim(app.IsEmpty(i, 1, 11))"GETTING ERROR here



因为 Do ... Loop 需要测试是否满足条件。例如:


because Do ... Loop needs to test if condition is met. For example:




Do Until Trim(app.IsEmpty(i, 1, 11))<>"" 'returns True/False

  • Do Until app.IsEmpty(i, 1, 11) 'returns True/False





  • 我很确定 isEmpty 方法只需要一个参数: isEmpty(var)

    参见 IBM文档 [ ^ ]。



    I'm pretty sure that isEmpty method requires only one parameter: isEmpty(var)
    See IBM documentation[^].


    这篇关于设置宏需要Ibm主机帮助的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆