if语句在VBA第2部分中

  • 本文关键字:2部 VBA 语句 if excel vba
  • 更新时间 :
  • 英文 :


所以我上周问了这个问题,我对这个问题有一个解决方案,但是只有一块不起作用。应用程序部分似乎不起作用。当MyArray与ARR(1)不匹配时,我也会得到结果。

最初的问题是:

我要使用此代码要做的是:

  1. 浏览指定文件夹中的所有文件以及该文件夹中的所有子文件夹。(该文件夹中的文件通常通过下划线分隔5个部分。例如," xx1_xx2_xx3_xx4_xx5"

  2. 如果我的MyArray中的3个字符指示器中的任何一个与文件名匹配XX2,则在单元格上列出XX4(22,3)和单元格(22,4)上的XX5并继续重复.....细胞(23,3),细胞(23,4),细胞(24,3),细胞(24,4).....等。我只需要确切的匹配..不确定该怎么做。

  3. 文件夹中只有3个下划线的文件...因此" xx1_xx2_xx3_xx4"。对于这些文件,如果MyArray匹配XX2,则在单元格上列出XX4(i,3),并显示单元格(i,4)

  4. 的"无指示器"


Sub tracker()
    Const FPATH As String = "\KEVINXXFILESXXFILES"
    Dim f As String, i, j As Long, arr, sht As Worksheet
    Dim myarray As Variant
    myarray = Array("XXX", "AAA", "BBB", "SBM", "SBS", "JDS", "QQQ", "WWW", "CCC", "DDD", "EEE", "XXX", "AAS", "RRR", "SSS", "KKK", "ABX")
    Set sht = ActiveSheet

    f = Dir("\KEVINXXFILESXXFILES")
    i = 22
    Do While f <> ""
        'split filename on underscore
        arr = Split(f, "_", 5)
        If UBound(arr) >= 3 Then
            If IsError(Application.Match(arr(1), myarray, 0)) Then
                If UBound(arr) = 3 Then
                    sht.Cells(i, 3).Value = Left(arr(3), Len(arr(3)) - 5)
                    sht.Cells(i, 4).Value = "No Indicator"
                Else
                    sht.Cells(i, 3).Value = arr(3)
                    If UBound(arr) >= 4 Then
                        sht.Cells(i, 4).Value = Left(arr(4), Len(arr(4)) - 5)
                    End If
                End If
                i = i + 1
            End If 'no match
        End If
        f = Dir() 'next file
    Loop
End Sub

您是否尝试过循环浏览数组

for x = 0 to 16
    If IsError(Application.Match(arr(1), myarray(x), 0)) Then
        If UBound(arr) = 3 Then
            sht.Cells(i, 3).Value = Left(arr(3), Len(arr(3)) - 5)
            sht.Cells(i, 4).Value = "No Indicator"
        Else
            sht.Cells(i, 3).Value = arr(3)
            If UBound(arr) >= 4 Then
                sht.Cells(i, 4).Value = Left(arr(4), Len(arr(4)) - 5)
            End If
        End If
            i = i + 1
    End If 'no match
next x

善良和倒带或留下反馈)

相关内容

  • 没有找到相关文章

最新更新