在For循环的每次迭代之后清除一个stringvariables

码:

Dim PrefixDict, k, j Dim renamePrefix As String Set PrefixDict = CreateObject("Scripting.Dictionary") For k = 1 To fileList.Count renamePrefix = renamePrefix + fileList.Item(k).renamePrefix + IIf(k < fileList.Count, ", ", " - ") PrefixDict(fileList(k).FilePattern) = renamePrefix Next k For Each j In PrefixDict Debug.Print j, PrefixDict(j) Next 

输出(即时窗口):

 Sat_Net_Out_PORTME*.xlsx r10, r20, r30, PRINTIMAGE*.txt r10, r20, r30, r40, Sat_Net_Out_OMAHA*.xlsx r10, r20, r30, r40, r50 - 

预期输出(即时窗口):

 Sat_Net_Out_PORTME*.xlsx r10, r20, r30 - PRINTIMAGE*.txt r40 - Sat_Net_Out_OMAHA*.xlsx r50 - 

我正在尝试为fileList(对象集合)中的每个.FilePattern创build一个string,其中包含每个项目的.renamePrefix的串联,匹配每个.FilePattern

我想我错误地设置了这个For循环,因为它正在迭代集合中的每个项目,而不是集合中的每个.FilePattern。 基本上,我想为每个.FilePattern单独renamePrefixstring。 无论如何要正确设置它?

编辑:

收集项目

 .FilePattern .renamePrefix Sat_Net_Out_PORTME*.xlsx r10 Sat_Net_Out_PORTME*.xlsx r20 Sat_Net_Out_PORTME*.xlsx r30 PRINTIMAGE*.txt r40 Sat_Net_Out_OMAHA*.xlsx r50 

在你的第一个循环中,你不知道什么时候为任何特定的键添加了最后一项,所以你将不得不添加短划线

 Dim PrefixDict, k, j, p Dim renamePrefix As String Set PrefixDict = CreateObject("Scripting.Dictionary") For k = 1 To fileList.Count p = fileList(k).FilePattern renamePrefix = fileList.Item(k).renamePrefix '<<<EDIT If Not PrefixDict.exists(p) Then PrefixDict(p) = renamePrefix Else PrefixDict(p) = PrefixDict(p) & ", " & renamePrefix End If Next k For Each j In PrefixDict PrefixDict(j) = PrefixDict(j) & " - " Debug.Print j, PrefixDict(j) Next