Catia VBA 到类型 "Collection" 的 .CATScript
Catia VBA to .CATScript for type "Collection"
在我的 VBA 代码中,我使用了以下内容:
Dim docsToSave As Scripting.Dictionary
Set docsToSave = New Scripting.Dictionary
Dim toRemove As Collection
Set toRemove = New Collection
...
More Code
...
For i = 1 To toRemove.Count
docsToSave.Remove (toRemove.Item(i))
Next
与字典相比,集合的好处在于您可以使用项目编号检索键。
我的问题是我需要将我的 VBA 代码转换为 CATScript(类似于 VBScript)。
我认为从另一个列表中减去 "key, item" 的一个列表来获得像上面这样简单的代码并不容易。
修复我的代码以使其在 CAT/VB-Script 中运行的最佳方法是什么?
我相信使用数组可能是可行的,因为我在一般编码方面非常陌生,我想在我尝试使用数组之前我会先在这里问一个更好的方法。
编辑:
此问题与 不同,因为此问题专门请求有关如何在 VBScript 中使用字典的信息,以便它可以复制现有 VBA-脚本中使用的集合的行为。
要么您必须使用数组,并在添加和删除项目时自行管理调整大小 to/from,要么您可以使用字典并将键作为整数进行管理。我通常做后者。
'create dictionary
set dict = CreateObject("Scripting.Dictionary")
'add object
dict.add dict.count,objectOrValue
'loop
for i = 0 to dict.count -1
objectOrValue = dict.item(i)
...
next
这应该很像从零开始的集合
如果你想保持 vba 集合的基于 1 的行为,请使用 "dict.count+1" 作为键
为了使发布的代码在 VBScript 中的行为与在 VBA 中的行为相同,可以使用以下代码:
Dim docsToSave
Set docsToSave = CreateObject("Scripting.Dictionary")
Dim toRemove
Set toRemove = CreateObject("Scripting.Dictionary")
...
More Code
...
For i = 0 To toRemove.Count - 1
docsToSave.Remove (toRemove.keys()(i))
Next
此外,与集合相比,要将其添加到词典,使用了不同的语法:
'VBA-code for a collection:
toRemove.Add (x)
'VBScript for a dictionary:
Call toRemove.Add(x, i)
这些更改足以让我的 VBA-script 在 VBScript 中工作。
在我的 VBA 代码中,我使用了以下内容:
Dim docsToSave As Scripting.Dictionary
Set docsToSave = New Scripting.Dictionary
Dim toRemove As Collection
Set toRemove = New Collection
...
More Code
...
For i = 1 To toRemove.Count
docsToSave.Remove (toRemove.Item(i))
Next
与字典相比,集合的好处在于您可以使用项目编号检索键。
我的问题是我需要将我的 VBA 代码转换为 CATScript(类似于 VBScript)。
我认为从另一个列表中减去 "key, item" 的一个列表来获得像上面这样简单的代码并不容易。
修复我的代码以使其在 CAT/VB-Script 中运行的最佳方法是什么?
我相信使用数组可能是可行的,因为我在一般编码方面非常陌生,我想在我尝试使用数组之前我会先在这里问一个更好的方法。
编辑:
此问题与
要么您必须使用数组,并在添加和删除项目时自行管理调整大小 to/from,要么您可以使用字典并将键作为整数进行管理。我通常做后者。
'create dictionary
set dict = CreateObject("Scripting.Dictionary")
'add object
dict.add dict.count,objectOrValue
'loop
for i = 0 to dict.count -1
objectOrValue = dict.item(i)
...
next
这应该很像从零开始的集合 如果你想保持 vba 集合的基于 1 的行为,请使用 "dict.count+1" 作为键
为了使发布的代码在 VBScript 中的行为与在 VBA 中的行为相同,可以使用以下代码:
Dim docsToSave
Set docsToSave = CreateObject("Scripting.Dictionary")
Dim toRemove
Set toRemove = CreateObject("Scripting.Dictionary")
...
More Code
...
For i = 0 To toRemove.Count - 1
docsToSave.Remove (toRemove.keys()(i))
Next
此外,与集合相比,要将其添加到词典,使用了不同的语法:
'VBA-code for a collection:
toRemove.Add (x)
'VBScript for a dictionary:
Call toRemove.Add(x, i)
这些更改足以让我的 VBA-script 在 VBScript 中工作。