2015-02-11 22 views
2

我有一個問題應用CSS3和漂亮的圓形按鈕到我的HTA應用程序。HTA VBScript和CSS3 + HTML5。代碼沒有正確運行時爲css3應用

只要我啓用<meta http-equiv="x-ua-compatible" content="ie=9">標記就可以將CSS3上的代碼直接下載到地獄。

計數不起作用,它看起來像在數組arrX的值的副本上操作。我用msgbox對它進行了測試,一旦點擊它就算正確,但是可以返回0

當我刪除的最後兩個潛艇sub SaveData()sub ExitWindow()meta標籤和括號,並從所有onclick腳本刪除括號作品般的魅力。

該死的CSS3打破它。

你能幫我一下,告訴它爲什麼不起作用,並在數組的參數副本上運行?

謝謝。 :)

<!--DOCTYPE html--> 
<html> 
<head> 
<meta http-equiv="x-ua-compatible" content="ie=9"> 
<style type="text/css"> 
    body { 
     background-color:white;} 
    table, th, td { 
     border: 1px black; 
     color: black; 
     font-family:"Lucida Console"; 
     font-size:100%;} 
    table { 
     width:500px;} 
    th { 
     text-align:left;} 
    td { 
     text-align:center;} 
    #maintd { 
     color:blue; 
     text-align:left;} 
    <!--#arrowtd { 
     width:100px;}--> 
#runbutton { 
    border: 2px solid #a1a1a1; 
    background: #dddddd; 
    border-radius: 25px;} 

</style> 
<title>KPI reporting tool</title> 
<HTA:APPLICATION 
    APPLICATIONNAME="KPI reporting tool" 
    CAPTION="yes" 
    SYSMENU="no" 
    SCROLL="no" 
    BORDER="thin" 
    SINGLEINSTANCE="yes" 
    WINDOWSTATE="normal" 
> 
</head> 
<Script language="VBscript"> 
'============================================================================================================== 
'KPI weights - EDIT HERE | KPI weights - EDIT HERE | KPI weights - EDIT HERE | KPI weights - EDIT HERE 
'============================================================================================================== 
    Sinc = 12 
    Rtask = 7 
    Reassignment = 2 
    Update = 2 
    Transfer = 5 
    Assisted = 3 
    PassingBack = 3 

'============================================================================================================== 
'SCRIPT - DO NOT EDIT !!! 
'============================================================================================================== 

'============================================================================================================== 
'ON LOAD SCRIPT TO SHOW KPI WEIGHTS 
'============================================================================================================== 
    Sub Window_OnLoad 
     window.resizeTo 550,280 
     UserValue1.InnerHTML = Sinc 
     UserValue2.InnerHTML = Rtask 
     UserValue3.InnerHTML = Reassignment 
     UserValue4.InnerHTML = Update 
     UserValue5.InnerHTML = Transfer 
     UserValue6.InnerHTML = Assisted 
     UserValue7.InnerHTML = Passingback 
    End Sub 

'============================================================================================================== 
'REPORTING ARRAY 
'============================================================================================================== 
    Dim arr0,arr1,arr2,arr3,arr4,arr5,arr6,arr7,arr8 
    arr0 = Array("Action",  "Weight",  "No. of times",  "Points") 
    arr1 = Array("Incidents", Sinc,   0,    0) 
    arr2 = Array("Requests", Rtask,   0,    0) 
    arr3 = Array("Reassignments",Reassignment, 0,    0) 
    arr4 = Array("Updates",  Update,   0,    0) 
    arr5 = Array("Transfers", Transfer,  0,    0) 
    arr6 = Array("Assists",  Assisted,  0,    0) 
    arr7 = Array("Passing back",Passingback, 0,    0) 
    arr8 = Array() 
    'msgbox(arr1(1))       'TEST MSGBOX 

'============================================================================================================== 
'SUB FOR COUNTING DOWN WITH FAIL-SAFE FOR NUMBERS BELOW ZERO 
'============================================================================================================== 
Sub RunScriptDown(DataAreaXa,DataAreaXb,arrX) 
    If arrX(2)>0 And arrx(3)>0 Then    'No. of times >0 AND Sum cannot be <0 
     arrx(2) = arrX(2) - 1 
     arrx(3) = arrX(3) - arrX(1)    'Sum = Sum - Weight 
     Else MsgBox "Value cannot be less than 0!",48,"ERROR" 
    End If 
    DataAreaXa.InnerHTML = arrX(2)    'No. of times 
    DataAreaXb.InnerHTML = arrX(1)*arrX(2)  'Weight*No. of times 
    DataAreaSum.InnerHTML = arr1(3)+arr2(3)+arr3(3)+arr4(3)+arr5(3)+arr6(3)+arr7(3) 
    msgbox(arrX(0) &" | " & "No.of times: " & arrX(2) & " | " & "total: " & arrX(3)) 'TEST MSGBOX 
End Sub 

'============================================================================================================== 
'SUB FOR COUNTING UP 
'============================================================================================================== 
Sub RunScriptUp(DataAreaXa,DataAreaXb,arrX) 
    arrX(2) = arrX(2) + 1 
    arrx(3) = arrX(3) + arrX(1) 
    DataAreaXa.InnerHTML = arrX(2) 
    DataAreaXb.InnerHTML = arrX(1)*arrX(2) 
    DataAreaSum.InnerHTML = arr1(3)+arr2(3)+arr3(3)+arr4(3)+arr5(3)+arr6(3)+arr7(3) 
    msgbox(arrX(0) &" | " & "No.of times: " & arrX(2) & " | " & "total: " & arrX(3)) 'TEST MSGBOX 
End Sub 

'============================================================================================================== 
'SUB FOR SAVING STATS TO A FILE 
'============================================================================================================== 
Sub SaveData() 
    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    Set WshShell = CreateObject("WScript.Shell") 
     relativePath = wshShell.CurrentDirectory 
     path = relativePath & "\KPI_STATS\" 
    statDate = Now 
    statFile = Month(statDate) & "-" & Day(statDate) & "-" & Year(statDate) & ".tsv" 
    Set objNetwork = CreateObject("WScript.Network") 
     statUser = objNetwork.UserDomain & "\" & objNetwork.UserName 
    If objFSO.FolderExists(path) Then 
    'DO NOTHING 
     Else Set objFolder = objFSO.CreateFolder(path) 
    End If 
    msgbox(path & statFile) 
    If objFSO.FileExists (path & statFile) Then 
     MsgBox "File already exists!",48,"ERROR" 
     Else objFSO.CreateTextFile (path & statFile) 
    End If 
    Set objFile = objFSO.OpenTextFile (path & statFile, 8) 
     strLine = statUser & vbTab & statDate & vbCrLf & _ 
        "--------------------------------------------------------" & vbCrLf & _ 
        arr0(0) & vbTab & vbTab & arr0(1) & vbTab & arr0(2) & vbTab & arr0(3) & vbCrLf & _ 
        arr1(0) & vbTab & arr1(1) & vbTab & arr1(2) & vbTab & vbTab & arr1(3) & vbCrLf & _ 
        arr2(0) & vbTab & arr2(1) & vbTab & arr2(2) & vbTab & vbTab & arr2(3) & vbCrLf & _ 
        arr3(0) & vbTab & arr3(1) & vbTab & arr3(2) & vbTab & vbTab & arr3(3) & vbCrLf & _ 
        arr4(0) & vbTab & vbTab & arr4(1) & vbTab & arr4(2) & vbTab & vbTab & arr4(3) & vbCrLf & _ 
        arr5(0) & vbTab & arr5(1) & vbTab & arr5(2) & vbTab & vbTab & arr5(3) & vbCrLf & _ 
        arr6(0) & vbTab & vbTab & arr6(1) & vbTab & arr6(2) & vbTab & vbTab & arr6(3) & vbCrLf & _ 
        arr7(0) & vbTab & arr7(1) & vbTab & arr7(2) & vbTab & vbTab & arr7(3) & vbCrLf & _ 
        "--------------------------------------------------------" & vbCrLf & _ 
        vbTab & vbTab & vbTab & vbTab & vbTab & arr1(3)+arr2(3)+arr3(3)+arr4(3)+arr5(3)+arr6(3)+arr7(3) & " TOTAL points" 
     objFile.WriteLine strLine 
    objFile.Close 
End Sub 

'============================================================================================================== 
'EXIT SUB 
'============================================================================================================== 
Sub ExitWindow() 
    usrExit = MsgBox("Do you really want to exit?" & vbCrLf & "All unsaved data will be lost!",52,"WARNING!") 
    If usrExit = vbYes Then 
    self.close() 
    Else 
    End If 
End Sub 

</Script> 

<!--HTML PART OF THE SCRIPT. WAY THE WINDOW LOOKS--> 
<body> 
<table> 
<tr> 
    <th>Event</th> 
    <th></th> 
    <th>Weight</th> 
    <th>Times done</th> 
    <th>TOTAL</th> 
</tr> 
<tr> 
     <td id="maintd">INCIDENTS:</td> 
    <td id="arrowtd"><input id=runbutton type="button" value="&#8592;" onClick="RunScriptDown(DataArea1a,DataArea1b,arr1)"> 
     <input id=runbutton type="button" value="&#8594;" onClick="RunScriptUp(DataArea1a,DataArea1b,arr1)"></td> 
    <td><span id=UserValue1></span></td> 
    <td><span id=DataArea1a name=a></span></td> 
    <td><span id=DataArea1b name=a></span></td> 
</tr> 
<tr> 
    <td id="maintd">REQUESTS:</td> 
    <td id="arrowtd"><input id=runbutton type="button" value="&#8592;" onClick="RunScriptDown(DataArea2a,DataArea2b,arr2)"> 
     <input id=runbutton type="button" value="&#8594;" onClick="RunScriptUp(DataArea2a,DataArea2b,arr2)"></td> 
    <td><span id=UserValue2></span></td> 
    <td><span id=DataArea2a name=b></span></td> 
    <td><span id=DataArea2b name=a></span></td> 
</tr> 
<tr> 
    <td id="maintd">REASSIGNMENTS:</td> 
    <td id="arrowtd"><input id=runbutton type="button" value="&#8592;" onClick="RunScriptDown(DataArea3a,DataArea3b,arr3)"> 
     <input id=runbutton type="button" value="&#8594;" onClick="RunScriptUp(DataArea3a,DataArea3b,arr3)"></td> 
    <td><span id=UserValue3></span></td> 
    <td><span id=DataArea3a name=c></span></td> 
    <td><span id=DataArea3b name=a></span></td> 
</tr> 
<tr> 
    <td id="maintd">UPDATES:</td> 
    <td id="arrowtd"><input id=runbutton type="button" value="&#8592;" onClick="RunScriptDown(DataArea4a,DataArea4b,arr4)"> 
     <input id=runbutton type="button" value="&#8594;" onClick="RunScriptUp(DataArea4a,DataArea4b,arr4)"></td> 
    <td><span id=UserValue4></span></td> 
    <td><span id=DataArea4a name=d></span></td> 
    <td><span id=DataArea4b name=a></span></td> 
</tr> 
<tr> 
    <td id="maintd">TRANSFERS:</td> 
    <td id="arrowtd"><input id=runbutton type="button" value="&#8592;" onClick="RunScriptDown(DataArea5a,DataArea5b,arr5)"> 
     <input id=runbutton type="button" value="&#8594;" onClick="RunScriptUp(DataArea5a,DataArea5b,arr5)"></td> 
    <td><span id=UserValue5></span></td> 
    <td><span id=DataArea5a name=e></span></td> 
    <td><span id=DataArea5b name=a></span></td> 
</tr> 
<tr> 
    <td id="maintd">ASSISTS:</td> 
    <td id="arrowtd"><input id=runbutton type="button" value="&#8592;" onClick="RunScriptDown(DataArea6a,DataArea6b,arr6)"> 
     <input id=runbutton type="button" value="&#8594;" onClick="RunScriptUp(DataArea6a,DataArea6b,arr6)"></td> 
    <td><span id=UserValue6></span></td> 
    <td><span id=DataArea6a name=f></span></td> 
    <td><span id=DataArea6b name=a></span></td> 
</tr> 
<tr> 
    <td id="maintd">PASSINGS:</td> 
    <td id="arrowtd"><input id=runbutton type="button" value="&#8592;" onClick="RunScriptDown(DataArea7a,DataArea7b,arr7)"> 
     <input id=runbutton type="button" value="&#8594;" onClick="RunScriptUp(DataArea7a,DataArea7b,arr7)"></td> 
    <td><span id=UserValue7></span></td> 
    <td><span id=DataArea7a name=g></span></td> 
    <td><span id=DataArea7b name=a></span></td> 
</tr> 
<tr> 
    <td><input id=runbutton type="button" value="Exit" onClick="ExitWindow"></td> 
    <td><input id=runbutton type="button" value="Show Report" onClick="RunReport"></td> 
    <td><input id=runbutton type="button" value="Save Data" onClick="SaveData"></td> 
    <td><span id=DataAreaSum name=Sum></span></td> 
</tr> 
</table> 

</body> 
</html> 
+0

僅供參考,不正確計算就是'子RunScriptDown(DataAreaXa,DataAreaXb,arrX)'和'子RunScriptUp(DataAreaXa,DataAreaXb,arrX)'。在html5中傳遞參數有什麼不同的方法嗎? – Mykail 2015-02-11 23:36:38

+0

你的腳本在'head'和'body'之間,它們應該是任何一個部分的一部分,而不是它們的外部。 – Teemu 2015-02-12 08:26:23

+0

M'kay。我這樣說' ...(html part here)'。它不起作用。與''相同。同樣的結果。腳本通常加載時沒有錯誤,只需要添加'()'到最後3個'onclick's,但計數不起作用。每次你按下箭頭向左或向右從0開始計數,並應記住數學後的值。 'SaveData'將所有零寫入tsv文件。任何想法可能是錯誤的?也許HTML5默認使用'arr'值的副本,而不是原件?也許我應該做不同於數組的方式?謝謝! – Mykail 2015-02-12 14:14:15

回答

2

我不能說我的答案可以被認爲是有據可查的。然而,毫無疑問,我們的確找到了一個參考參考的罪魁禍首。時代的變化,毫不遜色(近50年的編程)我敢說所有的執行品種的通過引用概念似乎永遠保持模棱兩可。不僅在不同的編程語言...

VBScript,例如:相同的腳本給出不同的結果與Windows腳本宿主,或(保持話題)與HTA和不同meta http-equiv標籤,例如

<meta http-equiv="x-ua-compatible" content="IE=9"> 
<!-- or <meta http-equiv="x-ua-compatible" content="IE=edge"> --> 
<!-- or <meta http-equiv="content-type" content="text/html"> --> 
<!-- or ... --> 

我可以提供你的HTA

  • 主要變化的工作版本:您的陣列arrX(即arr0(y)arr1(y),... arr7(y))組合在一個 - 矩陣die2d(X)(y)和一致的傳球ByRef arrX替換爲ByVal X。代碼註釋中的更多解釋。
  • 附加按鈕測試陣列與對應onClick過程Sub TestArray證明ByRef傳遞的參數治療和行爲(array類型)。點擊它不止一次,看到in-sub本地更改與腳本公開更改。參看也在代碼中註釋。
  • 附加(相似)按鈕測試標量,過程Sub TestScalar顯示ByRef傳遞參數行爲(不是array類型)。
  • 絕對不成功嘗試陷阱和抑制Esc鍵F5Alt鍵 + F4密鑰。例如,刷新F5鍵清除表單和數據...
  • 關鍵更改與代碼中的註釋。
  • 一些小的化妝品突變。
  • 一些小調試離開,例如Option Explicit
  • 未觸及邏輯中的某些不一致性,例如在DataAreaXb.InnerHTML顯示的另一個數值超過了計算(並保存)arrX(3)積分

下面的代碼:

<!-- <!DOCTYPE html> --> 
<html> 
<title>KPI reporting tool</title> 

<HTA:APPLICATION 
    ID="KPI" 
    APPLICATIONNAME="KPI reporting tool" 
    CAPTION="yes" 
    SYSMENU="no" 
    SCROLL="auto" 
    BORDER="thin" 
    SINGLEINSTANCE="yes" 
    WINDOWSTATE="normal" 
> 

<head> 
<meta http-equiv="x-ua-compatible" content="ie=9"> 

<style type="text/css"> 

    body { 
     background-color:white; 
     } 
    table, th, td { 
     border: 1px black; 
     color: black; 
     font-family:"Lucida Console"; 
     font-size:100%; 
     } 
    table { 
     width:550px; 
     } 
    th { 
     text-align:left; 
     } 
    td { 
     text-align:center; 
     } 

    #maintd { 
     color:blue; 
     text-align:left; 
     } 
/* 
    #arrowtd { 
     width:100px;} 
*/ 
    #runbutton { 
     border: 2px solid #a1a1a1; 
     background: #dddddd; 
     border-radius: 25px; 
     } 

</style> 

<Script type="text/vbscript"> ' language="VBscript"> 
'============================================================================= 
'KPI weights - EDIT HERE | KPI weights - EDIT HERE | KPI weights - EDIT HERE 
'KPI weights - EDIT HERE | KPI weights - EDIT HERE | KPI weights - EDIT HERE 
'KPI weights - EDIT HERE | KPI weights - EDIT HERE | KPI weights - EDIT HERE 
'============================================================================= 

    Option Explicit 
    Dim Sinc, Rtask, Reassignment, Update, Transfer, Assisted, PassingBack 

    Sinc = 12 
    Rtask = 7 
    Reassignment = 2 
    Update = 2 
    Transfer = 5 
    Assisted = 3 
    PassingBack = 3 

'============================================================================= 
'SCRIPT - DO NOT EDIT !!! 
'============================================================================= 

'============================================================================= 
'REPORTING ARRAY 
'============================================================================= 
    Dim die2d 
    die2d = Array _ 
     (Array("Action _ _ _", "Weight", "times#","Points") _ 
     , Array("Incidents _ _", Sinc,  0,0) _ 
     , Array("Requests _ _", Rtask,  0,0) _ 
     , Array("Reassignments", Reassignment,0,0) _ 
     , Array("Updates _ _ _", Update,  0,0) _ 
     , Array("Transfers _ _", Transfer, 0,0) _ 
     , Array("Assists _ _ _", Assisted, 0,0) _ 
     , Array("Passing back", PassingBack, 0,0) _ 
    ) 
    ' In fact, die2d is not a matrix, i.e. a two-dimensional array 
    ' It's a one-dimensional array in which every element 
    ' is a one-dimensional array as well. Therefore use 
    ' die2d(row)(col) reference instead of 2D matrices' die2d(row,col) 
    'msgbox Join(die2d(0),";") & vbNewLine & UBound(die2d) & vbTab & UBound(die2d(0)) 'TEST MSGBOX 

'============================================================================= 
'ON LOAD SCRIPT TO SHOW KPI WEIGHTS 
'============================================================================= 
    Sub Window_OnLoad 
     window.resizeTo 550,280 
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
    ' astonishing (note procedure name initial letter capitalization): 
    ' 
    ' Window_OnLoad (uppercase) then resizeTo succeeds 
    '       but .InnerHTML= fails 
    ' window_OnLoad (lowercase) then resizeTo fails 
    '       but .InnerHTML= succeeds 
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
    End Sub 

    Sub ShowWeights 
     UserValue1.InnerHTML = Sinc 
     UserValue2.InnerHTML = Rtask 
     UserValue3.InnerHTML = Reassignment 
     UserValue4.InnerHTML = Update 
     UserValue5.InnerHTML = Transfer 
     UserValue6.InnerHTML = Assisted 
     UserValue7.InnerHTML = PassingBack 
    End Sub 

'============================================================================= 
'SUB FOR COUNTING DOWN WITH FAIL-SAFE FOR NUMBERS BELOW ZERO 
'============================================================================= 
Sub RunScriptDown(DataAreaXa,DataAreaXb,byVal arrIDX) 
    If die2d(arrIDX)(2)>0 And die2d(arrIDX)(3)>0 Then   'No. of times >0 AND Sum cannot be <0 
     die2d(arrIDX)(2) = die2d(arrIDX)(2) - 1 
     die2d(arrIDX)(3) = die2d(arrIDX)(3) - die2d(arrIDX)(1) 'Sum = Sum - Weight 
    Else 'MsgBox "Value cannot be less than 0!",48,"ERROR" 
    End If 
    DataAreaXa.InnerHTML = die2d(arrIDX)(2)     'No. of times 
    DataAreaXb.InnerHTML = die2d(arrIDX)(1)*die2d(arrIDX)(2) 'Weight*No. of times 
    ''' ??? why not DataAreaXb.InnerHTML = die2d(arrIDX)(3) 
    DataAreaFoo.InnerHTML = SumColumn(2) 
    DataAreaSum.InnerHTML = SumColumn(3) 
End Sub 

'============================================================================= 
'SUB FOR COUNTING UP 
'============================================================================= 
Sub RunScriptUp(DataAreaXa,DataAreaXb,byVal arrIDX) 
    die2d(arrIDX)(2) = die2d(arrIDX)(2) + 1 
    die2d(arrIDX)(3) = die2d(arrIDX)(3) + die2d(arrIDX)(1) 
    DataAreaXa.InnerHTML = die2d(arrIDX)(2) 
    DataAreaXb.InnerHTML = die2d(arrIDX)(1)*die2d(arrIDX)(2) 
    ''' ??? why not DataAreaXb.InnerHTML = die2d(arrIDX)(3) 
    DataAreaFoo.InnerHTML = SumColumn(2) 
    DataAreaSum.InnerHTML = SumColumn(3) 
End Sub 

'============================================================================= 
'SUB FOR SAVING STATS TO A FILE 
'============================================================================= 
Sub SaveData() 
    Dim objFSO, WshShell, objFolder, objNetwork, objFile 
    Dim relativePath, path, statDate, statFile, statUser, strLine 
    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    Set WshShell = CreateObject("WScript.Shell") 
     relativePath = wshShell.CurrentDirectory 
     path = relativePath & "\KPI_STATS\" 
     statDate = Now 
     statFile = Month(statDate) & "-" & Day(statDate) & "-" & Year(statDate) & ".tsv" 
    Set objNetwork = CreateObject("WScript.Network") 
     statUser = objNetwork.UserDomain & "\" & objNetwork.UserName 
    If objFSO.FolderExists(path) Then 
    'DO NOTHING 
    Else Set objFolder = objFSO.CreateFolder(path) 
    End If 
    msgbox(path & statFile) 
    If objFSO.FileExists (path & statFile) Then 
     MsgBox "File already exists!",48,"ERROR" 
     Else objFSO.CreateTextFile (path & statFile) 
    End If 
    Set objFile = objFSO.OpenTextFile (path & statFile, 8) 
     strLine = statUser & vbTab & statDate & vbCrLf & _ 
      String(52, "-") & vbCrLf & _ 
      Join(die2d(0), vbTab) & vbCrLf & _ 
      Join(die2d(1), vbTab) & vbCrLf & _ 
      Join(die2d(2), vbTab) & vbCrLf & _ 
      Join(die2d(3), vbTab) & vbCrLf & _ 
      Join(die2d(4), vbTab) & vbCrLf & _ 
      Join(die2d(5), vbTab) & vbCrLf & _ 
      Join(die2d(6), vbTab) & vbCrLf & _ 
      Join(die2d(7), vbTab) & vbCrLf & _ 
      String(52, "-") & vbCrLf & _ 
      vbTab & vbTab & vbTab & vbTab & SumColumn(3) & " TOTAL points" 
     objFile.WriteLine strLine 
    objFile.Close 
End Sub 

'============================================================================= 
'EXIT SUB 
'============================================================================= 
Sub ExitWindow() 
    Dim usrExit 
    usrExit = vbYes 
    'usrExit = MsgBox("Do you really want to exit?" & vbCrLf & "All unsaved data will be lost!",52,"WARNING!") 
    If usrExit = vbYes Then 
     self.close() 
    Else 
    End If 
End Sub 

'============================================================================= 
'SUB FOR showing STATS 
'============================================================================= 
Sub RunReport() 
    Dim objNetwork 
    Dim strLine, statDate, statUser 
    statDate = Now 
    Set objNetwork = CreateObject("WScript.Network") 
    statUser = objNetwork.UserDomain & "\" & objNetwork.UserName 
    Set objNetwork = Nothing 
    strLine = statUser & vbTab & statDate & vbCrLf & _ 
     String(52, "-") & vbCrLf & _ 
     Join(die2d(0), vbTab) & vbCrLf & _ 
     Join(die2d(1), vbTab) & vbCrLf & _ 
     Join(die2d(2), vbTab) & vbCrLf & _ 
     Join(die2d(3), vbTab) & vbCrLf & _ 
     Join(die2d(4), vbTab) & vbCrLf & _ 
     Join(die2d(5), vbTab) & vbCrLf & _ 
     Join(die2d(6), vbTab) & vbCrLf & _ 
     Join(die2d(7), vbTab) & vbCrLf & _ 
     vbCrLf & _ 
     vbTab & vbTab & vbTab & vbTab & SumColumn(3) & " TOTAL points" 
    msgbox(strLine) 
End Sub 

'============================================================================= 
' TestArray SUB 
'============================================================================= 
Sub TestArray(byRef dieAd) 
dieAd(1)(2)=dieAd(1)(2)+100 ' this change is "in SUB" local 
          ' even thought the dieAd == die2d passed by reference 
die2d(7)(2)=die2d(7)(2)+100 ' this change is "script" global 
Sinc=Sinc+1     ' this change is "script" global 
    Dim strLine 
    strLine = "TestArray SUB" & vbCrLf & _ 
     String(52, "-") & vbCrLf & _ 
     Join(dieAd(0), vbTab) & vbCrLf & _ 
     Join(dieAd(1), vbTab) & vbCrLf & _ 
     Join(dieAd(2), vbTab) & vbCrLf & _ 
     Join(dieAd(3), vbTab) & vbCrLf & _ 
     Join(dieAd(4), vbTab) & vbCrLf & _ 
     String(52, "-") & vbCrLf & _ 
     Join(die2d(5), vbTab) & vbCrLf & _ 
     Join(die2d(6), vbTab) & vbCrLf & _ 
     Join(die2d(7), vbTab) & vbCrLf & _ 
     vbCrLf & _ 
     vbTab & vbTab & vbTab & vbTab & SumColumn(3) & " TOTAL points" _ 
     & vbCrLf & Sinc 
    msgbox(strLine) 

End Sub 
'============================================================================= 
' TestScalar SUB 
'============================================================================= 
Sub TestScalar(byRef nmbrS, byRef nmbrR) 
die2d(7)(2)=die2d(7)(2)+50 ' this change is "script" global 
Rtask = Rtask + 1   ' this change is "script" global 
          ' but nmbrR stays unchanged (!!!) 
          ' even thought the nmbrR == Rtask passed by reference 
nmbrS = nmbrS + 1   ' this change is "in SUB" local 
          ' even thought the nmbrS == Sinc passed by reference 
    Dim strLine 
    strLine = "TestScalar SUB" & vbCrLf & _ 
     String(52, "-") & vbCrLf & _ 
     Join(die2d(0), vbTab) & vbCrLf & _ 
     Join(die2d(1), vbTab) & vbCrLf & _ 
     Join(die2d(2), vbTab) & vbCrLf & _ 
     Join(die2d(3), vbTab) & vbCrLf & _ 
     Join(die2d(4), vbTab) & vbCrLf & _ 
     String(52, "-") & vbCrLf & _ 
     Join(die2d(5), vbTab) & vbCrLf & _ 
     Join(die2d(6), vbTab) & vbCrLf & _ 
     Join(die2d(7), vbTab) & vbCrLf & _ 
     vbCrLf & _ 
     vbTab & vbTab & vbTab & vbTab & SumColumn(3) & " TOTAL points" _ 
     & vbCrLf & "nmbrS" & vbTab & "Sinc" & vbTab & "Rtask" & vbTab & "nmbrR" _ 
     & vbCrLf & nmbrS & vbTab & Sinc & vbTab & Rtask & vbTab & nmbrR 
    msgbox(strLine) 
End Sub 

'============================================================================= 
' SumColumn FUNCTION 
'============================================================================= 
Function SumColumn(byVal col) 
    Dim ii 
    SumColumn = 0 
    For ii = 1 To UBound(die2d) 
     SumColumn = SumColumn + die2d(ii)(col) 
    Next 
End Function 

'============================================================================= 
' KeyCheck FUNCTION 
'============================================================================= 
'''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
' Absolutely unsuccessful attempt: 
' Escape, F5 and Alt+F4 keys should be trapped to ensure 
' no HTA window refreshes occur & proper exit-code runs 
'''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
Function KeyCheck(byRef myEvent) 
    Dim kk 
    'kk=myEvent.KeyCode 
    kk=myEvent.Key 
    If  kk = "F5" _ 
     Or kk = "Esc" Then 
     KeyCheck = False 
    Else 
     KeyCheck = True 
    End If 
    'msgbox (VarType(kk) & " " & TypeName(kk) & " '" & kk & "' " & myEvent.keyCode) 
End Function 

</Script> 

</head> 

<!--HTML PART OF THE SCRIPT. WAY THE WINDOW LOOKS--> 
<body onKeyUp="self.event.returnValue=KeyCheck(event)" onload=ShowWeights()> 
<table> 
<tr> 
    <th>Event</th> 
    <th></th> 
    <th>Weight</th> 
    <th>Times done</th> 
    <th>TOTAL</th> 
</tr> 
<tr> 
    <td id="maintd">INCIDENTS:</td> 
    <td id="arrowtd"> 
     <input id=runbutton type="button" value="&#8592;" onClick="RunScriptDown(DataArea1a,DataArea1b,1)"> 
     <input id=runbutton type="button" value="&#8594;" onClick="RunScriptUp(DataArea1a,DataArea1b,1)"> 
    </td> 
    <td><span id=UserValue1 name=UserValue1 value=Sinc></span></td> 
    <td><span id=DataArea1a name=1a></span></td> 
    <td><span id=DataArea1b name=1b></span></td> 
</tr> 
<tr> 
    <td id="maintd">REQUESTS:</td> 
    <td id="arrowtd"> 
     <input id=runbutton type="button" value="&#8592;" onClick="RunScriptDown(DataArea2a,DataArea2b,2)"> 
     <input id=runbutton type="button" value="&#8594;" onClick="RunScriptUp(DataArea2a,DataArea2b,2)"> 
    </td> 
    <td><span id=UserValue2 value=Rtask></span></td> 
    <td><span id=DataArea2a name=2a></span></td> 
    <td><span id=DataArea2b name=2b></span></td> 
</tr> 
<tr> 
    <td id="maintd">REASSIGNMENTS:</td> 
    <td id="arrowtd"> 
     <input id=runbutton type="button" value="&#8592;" onClick="RunScriptDown(DataArea3a,DataArea3b,3)"> 
     <input id=runbutton type="button" value="&#8594;" onClick="RunScriptUp(DataArea3a,DataArea3b,3)"></td> 
    <td><span id=UserValue3 value=Reassignment></span></td> 
    <td><span id=DataArea3a name=3a></span></td> 
    <td><span id=DataArea3b name=3b></span></td> 
</tr> 
<tr> 
    <td id="maintd">UPDATES:</td> 
    <td id="arrowtd"> 
     <input id=runbutton type="button" value="&#8592;" onClick="RunScriptDown(DataArea4a,DataArea4b,4)"> 
     <input id=runbutton type="button" value="&#8594;" onClick="RunScriptUp(DataArea4a,DataArea4b,4)"></td> 
    <td><span id=UserValue4 value=Update></span></td> 
    <td><span id=DataArea4a name=4a></span></td> 
    <td><span id=DataArea4b name=4b></span></td> 
</tr> 
<tr> 
    <td id="maintd">TRANSFERS:</td> 
    <td id="arrowtd"> 
     <input id=runbutton type="button" value="&#8592;" onClick="RunScriptDown(DataArea5a,DataArea5b,5)"> 
     <input id=runbutton type="button" value="&#8594;" onClick="RunScriptUp(DataArea5a,DataArea5b,5)"></td> 
    <td><span id=UserValue5></span></td> 
    <td><span id=DataArea5a name=5a></span></td> 
    <td><span id=DataArea5b name=5b></span></td> 
</tr> 
<tr> 
    <td id="maintd">ASSISTS:</td> 
    <td id="arrowtd"> 
     <input id=runbutton type="button" value="&#8592;" onClick="RunScriptDown(DataArea6a,DataArea6b,6)"> 
     <input id=runbutton type="button" value="&#8594;" onClick="RunScriptUp(DataArea6a,DataArea6b,6)"></td> 
    <td><span id=UserValue6></span></td> 
    <td><span id=DataArea6a name=6a></span></td> 
    <td><span id=DataArea6b name=6b></span></td> 
</tr> 
<tr> 
    <td id="maintd">PASSINGS:</td> 
    <td id="arrowtd"> 
     <input id=runbutton type="button" value="&#8592;" onClick="RunScriptDown(DataArea7a,DataArea7b,7)"> 
     <input id=runbutton type="button" value="&#8594;" onClick="RunScriptUp(DataArea7a,DataArea7b,7)"></td> 
    <td><span id=UserValue7></span></td> 
    <td><span id=DataArea7a name=7a></span></td> 
    <td><span id=DataArea7b name=7b></span></td> 
</tr> 
<tr> 
    <td><input id=runbutton type="button" value="Exit" onClick="ExitWindow()"></td> 
    <td><input id=runbutton type="button" value="Show Report" onClick="RunReport()"></td> 
    <td><input id=runbutton type="button" value="Save Data" onClick="SaveData()"></td> 
    <td><span id=DataAreaFoo name=DataAreaFoo></span></td> 
    <td><span id=DataAreaSum name=DataAreaSum></span></td> 
</tr> 
<tr> 
    <td><input id=runbutton type="button" value="Test Array" onClick="TestArray(die2d)"></td> 
    <td><input id=runbutton type="button" value="Test Scalar" onClick="TestScalar(Sinc, Rtask)"></td> 
</tr> 
</table> 

</body> 
</html>