每次迭代后都使用不同的消息框



Ekkehard.Horner通过以下代码(已经被我修改(帮助了我很多。但是现在我正在寻找一种在每次显示MsgBox "message 1"时添加计数器的方法。

<html>
<head>
<title>Sync Tool</title>
<HTA:APPLICATION
  APPLICATIONNAME="Sync Tool"
  ID="SyncTool"
  VERSION="1.0.0"
  BORDER="dialog"
  MAXIMIZEBUTTON="no"
  MINIMIZEBUTTON="no"
  SCROLL="no"
  SINGLEINSTANCE="yes"
  CONTEXTMENU="no"
  SELECTION="no"/>
</head>
<script language="VBScript">
Set objShell = CreateObject("WScript.Shell")
Sub Window_OnLoad
    Dim width, height
    width  = 330
    height = 310
    self.ResizeTo width, height
    self.MoveTo (screen.AvailWidth-width)/2, (screen.AvailHeight-height)/2
End Sub
Sub OnClickButtonSyncNow()
    ' Box A
    If BoxAA.checked Then
        MsgBox "BoxAA"
    Else
        'Do nothing
    End If
    If BoxAB.checked Then
        MsgBox "BoxAB"
    Else
        'Do nothing
    End If
    If BoxAC.checked Then
        MsgBox "BoxAC"
    Else
        'Do nothing
    End If
    If BoxAD.checked Then
        MsgBox "BoxAD"
    Else
        'Do nothing
    End If
    If BoxAE.checked Then
        MsgBox "BoxAE"
    Else
        'Do nothing
    End If
    ' Box B
    If BoxBA.checked Then
        MsgBox "BoxBA"
    Else
        'Do nothing
    End If
    If BoxBB.checked Then
        MsgBox "BoxBB"
    Else
        'Do nothing
    End If
    If BoxBC.checked Then
        MsgBox "BoxBC"
    Else
        'Do nothing
    End If
    If BoxBD.checked Then
        MsgBox "BoxBD"
    Else
        'Do nothing
    End If
    If BoxBE.checked Then
        MsgBox "BoxBE"
    Else
        'Do nothing
    End If
    Dim bF : bF = False
    Dim c1
    For Each c1 In Split("A B C D E F G H I J")
        Dim n : n = c1
        Dim b : Set b = document.getElementById(n)
        If b.Checked Then
            bF = True
        End If
    Next
    If bF Then
        MsgBox "all done"
    Else
        MsgBox "message 1"
    End If
End Sub
Sub ExitTool()
    window.close()
End Sub
</script>
<body bgcolor="firebrick">
<style type="text/css">
.tg  {border-collapse:collapse;border-spacing:0;}
.tg th{font-family:Arial, sans-serif; font-size:14px; font-weight:normal; padding-top:0px ;padding-right:20px; padding-bottom:0px; padding-left:0px ;border-style:solid; border-width:0px; overflow:hidden; word-break:normal;}
.tg td{font-family:Arial, sans-serif; font-size:14px; padding-top:5px ;padding-right:10px; padding-bottom:0px; padding-left:0px ;border-style:solid; border-width:0px; overflow:hidden; word-break:normal;}
.tg .tg-header{color:#FFFB00; font-size:22px; font-weight:bold; font-family:Verdana, Geneva, sans-serif !important;}
.tg .tg-text{color:white; font-family:Verdana, Geneva, sans-serif !important; vertical-align:top}
.button {height:50px; width:136px; font-weight:bold; background-color:#555555; border: 2px solid #FFFB00; color:white; text-align:center; text-decoration:none; display:inline-block; font-size:16px;}
</style>
<table class="tg">
  <tr>
    <th class="tg-header">Box A</th>
    <th class="tg-header">Box B</th>
  </tr>
  <tr>
    <td class="tg-text"><input type="checkbox" name="BoxAA" id="A">AA</td>
    <td class="tg-text"><input type="checkbox" name="BoxBA" id="B">BA</td>
  </tr>
  <tr>
    <td class="tg-text"><input type="checkbox" name="BoxAB" id="C">AB</td>
    <td class="tg-text"><input type="checkbox" name="BoxBB" id="D">BB</td>
  </tr>
  <tr>
    <td class="tg-text"><input type="checkbox" name="BoxAC" id="E">AC</td>
    <td class="tg-text"><input type="checkbox" name="BoxBC" id="F">BC</td>
  </tr>
  <tr>
    <td class="tg-text"><input type="checkbox" name="BoxAD" id="G">AD</td>
    <td class="tg-text"><input type="checkbox" name="BoxBD" id="H">BD</td>
  </tr>
  <tr>
    <td class="tg-text"><input type="checkbox" name="BoxAE" id="I">AE</td>
    <td class="tg-text"><input type="checkbox" name="BoxBE" id="J">BE</td>
  </tr>
</table>
<br>
<input type="button" class="button" name="SyncNow" id="SyncNow" value="Sync Now" onclick="OnClickButtonSyncNow">
<input type="button" class="button" name="Exit" id="Exit" value="Exit" onclick="ExitTool">
</body>
</html>

我正在寻找的结果是这样的:

If bF Then
    MsgBox "all done"
    window.close()
Else
    MsgBox "message 1" 'counter + 1
ElseIf counter = 2 Then
    MsgBox "message 2" 'counter + 1
ElseIf counter = 3 Then
    MsgBox "message 3" 'counter + 1
ElseIf counter = 4 Then
    MsgBox "message 4" 'counter + 1
ElseIf counter = 5 Then
    MsgBox "message 5" 'no more counting needed because of window.close()
    window.close()
End If

我尝试了不同的东西,比如Do..Loop,但我的计数器永远不会超过 1。真的很难理解 VBScript 中计数的基础知识。

您需要一个全局变量来保留跨过程调用的计数,以及一个包含使用计数器作为索引访问的消息的数组。将代码更改为如下所示的内容:

<script language="VBScript">
Dim ctr : ctr = 0
messages = Array( "message 1", _
    "message 2", _
    "message 3", _
    "message 4", _
    "aborting"
)
...
Sub OnClickButtonSyncNow
    ...
    If bF Then
        MsgBox "all done"
        window.Close
    Else
        MsgBox messages(ctr)
        If ctr >= 4 Then window.Close
        ctr = ctr + 1
    End If
End Sub
...
</script>

相关内容

  • 没有找到相关文章

最新更新