Excel 过滤器列表调试
调试我创建的这个过程时遇到问题。我有超过两千本工作手册,我正在努力筛选 我给这个函数提供了一个字典,它的键是文件路径和名称,条目是一个9位数的零件号和修订号。根据文件夹路径和零件号,我试图过滤掉旧版本号 我收到的错误消息是: 运行时错误“10”: 此阵列已修复或暂时锁定 对于dunsorded.Keys中的每个VKey02,调试器将在以下行停止:Excel 过滤器列表调试,excel,vba,Excel,Vba,调试我创建的这个过程时遇到问题。我有超过两千本工作手册,我正在努力筛选 我给这个函数提供了一个字典,它的键是文件路径和名称,条目是一个9位数的零件号和修订号。根据文件夹路径和零件号,我试图过滤掉旧版本号 我收到的错误消息是: 运行时错误“10”: 此阵列已修复或暂时锁定 对于dunsorded.Keys中的每个VKey02,调试器将在以下行停止:。调试计数变量k1和k2在崩溃时分别以值39和1结束 如有任何关于如何解决此问题的建议,将不胜感激 注意:我已经为这段代码启用了“Microsoft脚本
。调试计数变量k1
和k2
在崩溃时分别以值39
和1
结束
如有任何关于如何解决此问题的建议,将不胜感激
注意:我已经为这段代码启用了“Microsoft脚本运行时”引用,使其按预期工作
Option Explicit
Function HighestRev(ByVal DUnsorted As Scripting.Dictionary) As Scripting.Dictionary
Dim DSorted As Scripting.Dictionary
'Keys
Dim VKey01 As Variant
Dim VKey02 As Variant
Dim SKey01 As String
Dim SKey02 As String
'Items
Dim SItem01 As String
Dim SItem02 As String
'SKUs
Dim LSKU01 As Long
Dim LSKU02 As Long
'Revs
Dim IRev01 As Long
Dim IRev02 As Long
'File Name
Dim SName01 As String
Dim SName02 As String
'File Path
Dim SPath01 As String
Dim SPath02 As String
'Debug Variables
Dim k1 As Integer
Dim k2 As Integer
'Initializing
Set DSorted = DUnsorted
'Looping Through
k1 = 0
For Each VKey01 In DUnsorted.Keys
k1 = k1 + 1: k2 = 1 '<-- Debug
If VKey01 = "[A Particular File]" Then
Debug.Print "1 - " & VKey01
Debug.Print k1 & " - " & k2
End If
SKey01 = VKey01
If Not DSorted.Exists(SKey01) Then GoTo SkipKey01
SItem01 = DUnsorted(SKey01)
LSKU01 = Split(SItem01, "-")(0)
IRev01 = Split(SItem01, "-")(1)
SName01 = Split(SKey01, "\")(UBound(Split(SKey01, "\")))
SPath01 = Left(SKey01, Len(SKey01) - Len(SName01))
For Each VKey02 In DUnsorted.Keys
k2 = k2 + 1 '<-- Debug
If VKey02 = "[A Particular File]" Then
Debug.Print "2 - " & VKey02
Debug.Print k1 & " - " & k2
End If
SKey02 = VKey02
If Not DSorted.Exists(SKey02) Then GoTo SkipKey02
SItem02 = DUnsorted(SKey02)
LSKU02 = Split(SItem02, "-")(0)
IRev02 = Split(SItem02, "-")(1)
SName02 = Split(SKey02, "\")(UBound(Split(SKey02, "\")))
SPath02 = Left(SKey02, Len(SKey02) - Len(SName02))
'Identifying Match
If SKey01 <> SKey02 Then
If LSKU01 = LSKU02 Then
If UBound(Split(SPath01, SPath02)) > 0 Or UBound(Split(SPath02, SPath01)) > 0 Then
'Eliminating Older Revision
If IRev01 > IRev02 Then
DSorted.Remove (SKey02)
ElseIf IRev01 < IRev02 Then
DSorted.Remove (SKey01)
Else '<-- Last Modified Priority
DSorted.Remove (OlderDate(SKey01, SKey02))
End If
If Not DSorted.Exists(SKey01) Then GoTo SkipKey01
End If
End If
End If
SkipKey02:
Next VKey02
SkipKey01:
Next VKey01
End Function
选项显式
函数HighestRev(ByVal dunsordering As Scripting.Dictionary)作为Scripting.Dictionary
Dim数据排序为脚本。字典
”“钥匙
尺寸VKey01作为变型
尺寸VKey02作为变型
将SKey01设置为字符串
将SKey02设置为字符串
"项目,
Dim SItem01作为字符串
Dim SItem02作为字符串
“SKU
Dim LSKU01的长度为
Dim LSKU02长度为
“转数
调暗IRev01的长度为
调暗IRev02的长度为
'文件名
将SName01作为字符串
作为字符串的Dim SName02
'文件路径
Dim SPath01作为字符串
Dim SPath02作为字符串
'调试变量
作为整数的Dim k1
作为整数的Dim k2
“初始化
Set DSorted=DUnsorted
"循环",
k1=0
对于dunsorded.Keys中的每个VKey01
k1=k1+1:k2=1'0或UBound(拆分(SPath02,SPath01))>0,然后
“消除旧版本
如果IRev01>IRev02,则
数据排序。删除(SKey02)
ElseIf IRev01 否则,这个错误实际上是在一本工作簿后面发生的。我仍然对工作簿路径和文件名的位置感到困惑,它给了我这个问题,但代码本身现在正在工作