繁体   English   中英

遍历变量以创建文件夹

[英]Loop through variable to create folders

我尝试使用下面的代码遍历strDir变量,以在4个不同的位置创建4个不同的文件夹。

它不会创建文件夹。 没有错误出现。

Dim i as Integer  
JobName = NewJob.Value

If New_Job.JobYes.Value Then
strDir1 = "C:\QTR\" & JobName & " QTR"
strDir2 = "C:\QT\" & JobName & " QT"
strDir3 = "C:\EMAILS\" & JobName & " EMAILS"
strDir4 = "C:\DOCUMENTS\" & JobName & " DOCS"        

    For i = 1 To 4
        If Dir(strDir, vbDirectory) = "" Then
            MkDir strDir & i
        Else
        MsgBox "Directory exists."
    End If
    Next i
Else
End If

我同意数组方法,但是避免在数组中创建空白条目。 它有一个从零开始的索引(默认情况下), strDir(4)实际上创建了5个条目。 例如0、1、2、3、4

首先,将Option Explicit放在代码表的顶部,或者进入VBE的工具►选项►编辑器,然后在Require Variable Declaration旁边打勾。 这将快速识别代码中诸如strDir类的未声明变量的使用。

Dim d As Long, strDir As Variant, JobName As String

strDir = Array("C:\QTR\" & JobName & " QTR", _
               "C:\QT\" & JobName & " QT", _
               "C:\EMAILS\" & JobName & " EMAILS", _
               "C:\DOCUMENTS\" & JobName & " DOCS")

For d = LBound(strDir) To UBound(strDir)
    If Dir(strDir(d), vbDirectory) = "" Then
        MkDir strDir(d)
    Else
        Debug.Print strDir(d) & " exists."
    End If
Next d

LBOUNDUBound函数函数返回该阵列的U PPER和L奥尔 oundaries。

试试这个代码:

Dim i as Integer  
Dim strDir(4) as String
JobName = NewJob.Value

If New_Job.JobYes.Value Then
strDir(1) = "C:\QTR\" & JobName & " QTR"
strDir(2) = "C:\QT\" & JobName & " QT"
strDir(3) = "C:\EMAILS\" & JobName & " EMAILS"
strDir(4) = "C:\DOCUMENTS\" & JobName & " DOCS"        

    For i = 1 To 4
        If Dir(strDir(i), vbDirectory) = "" Then
            MkDir strDir(i)
        Else
        MsgBox "Directory exists."
    End If
    Next i
Else
End If

这确实会产生错误,因为不可能将“ strDir”和i连接在一起以使用该特定参数。 正确解决此问题的最简单方法是跳过循环并使用:

If Dir(strDir, vbDirectory) = "" Then
    MkDir strDir1
    MkDir strDir2
    MkDir strDir3
    MkDir strDir4
Else
    MsgBox "Directory exists."
End If

如果确实需要创建大量目录,例如> 10,那么您可能希望使用按名称动态请求参数,但是如果不需要,我不建议您这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM