Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 发出初始化dictionary类型的一个变量和dict类型的另一个变量的问题_Vba_Vbscript_Qtp - Fatal编程技术网

Vba 发出初始化dictionary类型的一个变量和dict类型的另一个变量的问题

Vba 发出初始化dictionary类型的一个变量和dict类型的另一个变量的问题,vba,vbscript,qtp,Vba,Vbscript,Qtp,此更新还更新了globalDict中的值。它好像localDict只是一个指针 你知道会出什么问题吗 谢谢, 拉杰什(Rajesh)设计:见下: 通常,当您使用Set将对象引用指定给 变量,不会为该变量创建对象的副本。 而是创建对对象的引用。不止一个 对象变量可以引用同一个对象。因为这些变量 对象的引用(而不是副本)是否有任何更改 对象反映在引用它的所有变量中 您可以按如下方式制作Dictionary对象的相同副本: Dim globalDict Dim localDict . 'Data fr

此更新还更新了
globalDict
中的值。它好像
localDict
只是一个指针

你知道会出什么问题吗

谢谢, 拉杰什(Rajesh)

设计:见下:

通常,当您使用
Set
将对象引用指定给 变量,不会为该变量创建对象的副本。 而是创建对对象的引用。不止一个 对象变量可以引用同一个对象。因为这些变量 对象的引用(而不是副本)是否有任何更改 对象反映在引用它的所有变量中

您可以按如下方式制作Dictionary对象的相同副本:

Dim globalDict
Dim localDict
.
'Data from a excel is loaded to globalDict

Set localDict=globalDict(1)

localDict(item1)="AAA"
输出

option explicit
On Error GoTo 0
Dim strResult: strResult = Wscript.ScriptName

Dim globalDict
Set globalDict = CreateObject("Scripting.Dictionary")
globalDict.Add "a", "Athens"    ' add some keys and items
globalDict.Add "b", "Belgrade"
globalDict.Add "c", "Cairo"

    ' create an identical copy of a Dictionary object
Dim localDict, arrKeys, arrItems, ii          ' declare variables
Set localDict = CreateObject("Scripting.Dictionary")
    arrKeys   = globalDict.Keys               ' get the keys
   'arrItems  = globalDict.Items              ' get the items: unnecessary
For ii= 0 To UBound( arrKeys)
   '(debug output) strResult = strResult & vbNewLine & arrKeys(ii) & vbTab & arrItems(ii)
   localDict.Add arrKeys(ii), globalDict( arrKeys(ii)) ' add appropriate keys and items
Next
    '           identical copy is created now

localDict("b") = "Brno"

strResult = strResult & vbNewLine & globalDict("b")
strResult = strResult & vbNewLine &  localDict("b")
strResult = strResult & vbNewLine & "-"
'strResult = strResult & vbNewLine & 

Wscript.Echo strResult ' the only `Echo` => run under `CScript.exe` or `WScript.exe`

谢谢Jose,你知道我怎么能单独复制内容吗?
==> cscript D:\VB_scripts\SO\37644677.vbs
37644677.vbs
Belgrade
Brno
-