首页 > 解决方案 > VBScript Do While 循环在嵌套时跳过部分代码

问题描述

我有这个 Do...While - 循环 VBScript 代码,可以很好地将屏幕数据从 Bluezone Web-to-Host 平台拉到 Excel,然后对其进行排序。但是,它需要密码才能打开记录。此密码的变量已命名CourtCode,值位于Sheet("Main").Range("B2"). VBScript 可以很好地提取此单一密码的记录

但是当我在同一张表的B列中填写密码列表并尝试循环时,我发现它只会显示记录的屏幕并只处理第一条记录。

这是VBScript代码:

Do While oRow < numberofLoops And Checkr < 1
'For oRow = 1 To numberofLoops

z = 1



'  PF11 - GENERAL LOOK-UPS AND INQUIRY 
bzo.SendKey "<PF11>"
bzo.WaitReady 10, 1


' Enter court code
bzo.SetCursor 8, 37
bzo.SendKey CourtCode
bzo.SendKey "<PF6>"
bzo.WaitReady 10, 1

    ' Loop through X entry



    If oRow > 10 And oRow < 21 Then
            z = z + 10
            bzo.SendKey "<PF8>"
            bzo.WaitReady 10, 1
    End If

    If oRow > 20 And oRow < 31 Then
            z = z + 20
            bzo.SendKey "<PF8>"
            bzo.WaitReady 10, 1

            bzo.SendKey "<PF8>"
            bzo.WaitReady 10, 1
    End If

    If oRow > 30 And oRow < 41 Then
            z = z + 30
            bzo.SendKey "<PF8>"
            bzo.WaitReady 10, 1

            bzo.SendKey "<PF8>"
            bzo.WaitReady 10, 1

            bzo.SendKey "<PF8>"
            bzo.WaitReady 10, 1
    End If

  Do While z < oRow     

        bzo.SendKey "<Down>"
    bzo.WaitReady 10, 100
        z = z + 1
    Loop



    'If oRow = 11 Then 
    '       bzo.SendKey "<Up>"
    '       bzo.WaitReady 10, 1
    'End If

bzo.SendKey "x"
bzo.SendKey "<Enter>"
bzo.WaitReady 10, 1

bzo.SendKey "<PF1>"
bzo.WaitReady 10, 1

    ' Copy first screen
bzo.Copy rcScreen
wb.Sheets("DATA").Activate
wb.Sheets("DATA").Range("A1").Select
wb.Sheets("DATA").Paste

'Go back
bzo.SendKey "<PA2>"
bzo.WaitReady 10, 1

bzo.SendKey "<PF2>"
bzo.WaitReady 10, 1

'Copy second screen
 bzo.Copy rcScreen
wb.Sheets("DATA").Range("N1").Select
wb.Sheets("DATA").Paste

'Go back
bzo.SendKey "<PA1>"
bzo.WaitReady 10, 1

oRow = oRow + 1
eo.Run "Sortr"

Checkr = eo.ActiveWorkbook.Sheets("MAIN").Range("F2").Value

 Loop 

为了使用循环重复此代码,我尝试了:

Do While i < numberofpasscodes  ' As found in Excel sheet

  CourtCode = eo.ActiveWorkbook.Sheets("MAIN").Range("B" & i).Text
   '''''''''''''''
   '  Block of vbscript loop above
   '''''''''''''''
  i = i + 1

Loop

我面临的问题是新循环每个密码不会超过一条记录。请帮忙。我不知道我是否缺少任何东西。

标签: excelvbavbscript

解决方案


推荐阅读