通过variables循环来创build文件夹

我尝试使用下面的代码循环通过strDirvariables在4个不同的位置创build4个不同的文件夹。

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

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 

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

首先,将Option Explicit放在代码表的顶部,或者进入VBE的Tools(工具)►Options(选项)►Editor(编辑器),然后在需要variables声明旁边打勾。 这将很快识别代码中使用未声明的variables(如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 

LBound和UBound函数返回数组的U pper和L bower。

试试这个代码:

 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”&我在一起,使用该特定的参数。 最简单的方法来解决这个问题是跳过循环,并使用:

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

如果你真的需要创build大量的目录,比如说> 10,那么你可能想要dynamic地使用名字来请求参数,但是如果你不需要它,我不会推荐它。