簡體   English   中英

Excel VBA For Loop和Counter的嵌套IF語句

[英]Excel VBA For Loop and Nested IF statements for Counter

我在一個單元格中具有一個值,該值應與目錄中文檔的文件名匹配。

Sheet3列A1 = C:\\ Users \\ Admin \\ Desktop \\ Folder1

Sheet3列A2 = test.xls

‘Location of directory
sCurrentXLDirectory = Worksheets("Sheet3").Cells(1, 1).Value
Set CurrentXLFSO = CreateObject("Scripting.FileSystemObject")
ProceedNow = True
Set CurrentXLFolder = CurrentXLFSO.GetFolder(sCurrentXLDirectory)
Set CurrentXLFiles = CurrentXLFolder.Files
‘Always 10 files in this folder
If CurrentXLFiles.Count <> 10 Then
   MsgBox "Wrong Directory or Folder Mismatch"
   ProceedNow = False
Else
'Return one for indentical filename
Dim NameCount As Integer
NameCount = 0
For Each folderIDX In CurrentXLFiles
 ‘Compare file names specified cell value
    If folderIDX.Name = Worksheets("Sheet3").Cells(1, 2).Value Then
    NameCount = NameCount + 1
        If NameCount <> 1 Then
            MsgBox "Unable to find file”
            ProceedNow = False
        End If
    End If
Next
End If

由於某些原因,即使我將test.xls更改為test1.xls,它仍然會繼續執行Proceed = True

如果嵌套IF語句不是實現此目的的首選方法,請引導我朝正確的方向發展。

如果該過程的目的是驗證文件是否存在,則使用Dir()函數將更加簡單。

如果這是目標,請嘗試以下代碼:

Sub test()
    Dim sDirectory As String
    Dim sFile As String

    sDirectory = Worksheets("Sheet3").Cells(1, 1).Value
    sFile = Worksheets("Sheet3").Cells(1, 2).Value
    sFile = Dir(sDirectory & "\" & sFile, vbDirectory)
    If Len(sFile) = 0 Then
        MsgBox "Unable to find file"
    End If
End Sub

您提供的代碼不會更改文件名,因此也許這只是您嘗試的開始。 但是,我發現Range(“ A2”)是“ Cells(2,1)”,而不是“ Cells(1,2)”,就像您當前擁有的那樣。 您正在引用單元格B1,它可能不包含文件名。

為了減輕將來的此類混亂,請始終一一提及,然后避免或輕松診斷此類問題。

如:

If folderIDX.Name = Worksheets("Sheet3").Range("A2").Value Then

這將觸發您正在尋找的“ ProceedNow = False”標志。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM