Arrays InStr不';t似乎在这个验证小组工作。有人知道为什么吗?

Arrays InStr不';t似乎在这个验证小组工作。有人知道为什么吗?,arrays,string,vba,excel,comparison,Arrays,String,Vba,Excel,Comparison,我正在检查用户输入的两个不同目录,以确保它们不包含windows不允许用于文件夹名称的任何符号。这两个目录是名为outputFolder和dirName的字符串,禁止的字符存储在名为msWinFolderChars的数组中。我有一个for循环,每次检查两个目录中的每个字符一个,并且(理想情况下)在发现一个字符时提醒用户并杀死sub。但实际发生的情况是,如果我输入一个无效字符,程序将找不到它并一直运行,直到它真正打开该目录,此时它崩溃,因为它找不到包含无效字符的文件夹。有人看到哪里出了问题吗 Fo

我正在检查用户输入的两个不同目录,以确保它们不包含windows不允许用于文件夹名称的任何符号。这两个目录是名为outputFolder和dirName的字符串,禁止的字符存储在名为msWinFolderChars的数组中。我有一个for循环,每次检查两个目录中的每个字符一个,并且(理想情况下)在发现一个字符时提醒用户并杀死sub。但实际发生的情况是,如果我输入一个无效字符,程序将找不到它并一直运行,直到它真正打开该目录,此时它崩溃,因为它找不到包含无效字符的文件夹。有人看到哪里出了问题吗

For Each char In msWinFolderChars
If InStr(outputFolder, char) = Not 0 Then
    MsgBox ("You have entered an invalid output folder name. Please try again without using " & char)
    Exit Sub
ElseIf InStr(dirName, char) = Not 0 Then
    MsgBox ("You have entered an invalid CSV directory. Please try again without using " & char)
    Exit Sub
End If
Next

如果InStr(outputFolder,char)为0,则使用
,而不是0
等于-1。您应该改用
0
。这非常有效,谢谢您的解释!成功了!谢谢Rory在上面解释说,
不是0
等于-1,这导致计算错误。