2013-12-13 5 views
0

아래 코드를 실행하는 동안 Subscript out of range - error 9을 받았습니다. 누군가 내가 뭘 잘못하고 있다고 말할 수 있습니까?아래 첨자가 범위를 벗어남 - 오류 # 9

Sub testing1() 
    Dim Fso As FileSystemObject 
    Dim Fldr As Folder 
    Dim Fpath As String 
    Dim Fl As File 
    Dim Sh As Worksheet 
    Dim cell As Range 
    Dim Myvalue As String 

    Application.DisplayAlerts = False 
    Myvalue = Application.InputBox("Enter your value") 

    Set Fso = New FileSystemObject 
    With Application.FileDialog(msoFileDialogFolderPicker) 
     .Show 
     Fpath = .SelectedItems(1) 
    End With 

    Set Fldr = Fso.GetFolder(Fpath) 

    For Each Fl In Fldr.Files 
     For Each Fl In Fldr.Files 
      For Each Sh In Workbooks(Fl.Name).Sheets 
       For Each cell In Sh.UsedRange 
        If cell.Value = Myvalue Then 
         cell.Interior.ColorIndex = 12 
        End If 
       Next cell 
      Next Sh 
     Next Fl 
    Next Fl 
End Sub 

답변

2

닫힌 통합 문서 내에서 데이터를 변경할 수 없습니다. 먼저 열어야합니다. 루프에서 먼저 통합 문서를 연 다음 서식을 적용한 다음 닫아야합니다. 다음 코드를 참조하십시오.

Sub testing1() 

    Dim TargetBook As Workbook 
    Dim Fso As FileSystemObject 
    Dim Fldr As Folder 
    Dim Fpath As String 
    Dim Fl As File 
    Dim Sh As Worksheet 
    Dim cell As Range 
    Dim Myvalue As String 

    Application.DisplayAlerts = False 
    Myvalue = Application.InputBox("Enter your value") 

    Set Fso = New FileSystemObject 
    With Application.FileDialog(msoFileDialogFolderPicker) 
     .Show 
     Fpath = .SelectedItems(1) 
    End With 
    Set Fldr = Fso.GetFolder(Fpath) 

    For Each Fl In Fldr.Files 
     Set TargetBook = Workbooks.Open(Fl.Name) '--Added this. 
     For Each Sh In TargetBook.Worksheets '--Changed this. 
      For Each cell In Sh.UsedRange 
       If cell.Value = Myvalue Then 
        cell.Interior.ColorIndex = 12 
       End If 
      Next cell 
     Next Sh 
     TargetBook.Close '--Added this. 
    Next Fl 

End Sub 

이 정보가 도움이되는지 알려면 알려주십시오.

+2

+1 루핑 대신 팁을 사용하면'.Replace'를 사용할 수 있습니까? –

관련 문제