Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.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
Excel 过滤器列表调试_Excel_Vba - Fatal编程技术网

Excel 过滤器列表调试

Excel 过滤器列表调试,excel,vba,Excel,Vba,调试我创建的这个过程时遇到问题。我有超过两千本工作手册,我正在努力筛选 我给这个函数提供了一个字典,它的键是文件路径和名称,条目是一个9位数的零件号和修订号。根据文件夹路径和零件号,我试图过滤掉旧版本号 我收到的错误消息是: 运行时错误“10”: 此阵列已修复或暂时锁定 对于dunsorded.Keys中的每个VKey02,调试器将在以下行停止:。调试计数变量k1和k2在崩溃时分别以值39和1结束 如有任何关于如何解决此问题的建议,将不胜感激 注意:我已经为这段代码启用了“Microsoft脚本

调试我创建的这个过程时遇到问题。我有超过两千本工作手册,我正在努力筛选

我给这个函数提供了一个字典,它的键是文件路径和名称,条目是一个9位数的零件号和修订号。根据文件夹路径和零件号,我试图过滤掉旧版本号

我收到的错误消息是:

运行时错误“10”:

此阵列已修复或暂时锁定

对于dunsorded.Keys中的每个VKey02,调试器将在以下行停止:
。调试计数变量
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否则,这个错误实际上是在一本工作簿后面发生的。我仍然对工作簿路径和文件名的位置感到困惑,它给了我这个问题,但代码本身现在正在工作