1
대화 상자에서 연 통합 문서 파일에 "Test_Worksheet"워크 시트가 있는지 확인하는 동안 코드가 잘 실행되고 있습니다. 해당 파일에 "Test_Worksheet"시트가 있으면통합 문서 파일이 올바르게 열리고 Debug.print (Sub ChkSalfile)에 "Name is True"가 표시됩니다.구독이 범위를 벗어남 오류
그러나 통합 문서에서 시트를 사용할 수없는 경우 "범위를 벗어난 구독"오류가 발생합니다. 도와주세요. 내 코드는 다음과 같습니다.
Sub Main()
Dim salefor As Workbook
Dim salpathfileName As String, salfileName As String
Dim fd As Office.FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
.AllowMultiSelect = False
.Title = "Please select file."
.Filters.Clear
.Filters.Add "Excel 2003", "*.xls?"
.InitialFileName = "*SAL*.*"
result4 = .Show
If (result4 <> 0) Then
salfileName = Dir(.SelectedItems(1))
salpathfileName = .SelectedItems(1)
Else
'if user pressed CANCEL - exit sub
Application.ScreenUpdating = True
MsgBox "User pressed CANCEL"
Exit Sub
End If
End With
Set salefor = Workbooks.Open(salfileName, ReadOnly:=True)
Call ChkSalfile(salfileName, salefor)
End Sub
Sub ChkSalfile (salfileName As String, salefor As Workbook)
Dim chksalsheet As String
chksalsheet = DoesWorkSheetExist("Test_Worksheet", salfileName)
If chksalsheet = True Then
Debug.Print "Name is " & chksalsheet
Else
Debug.Print "File not found"
End If
End Sub
Option Explicit
Public Function DoesWorkSheetExist(WorkSheetName As String, Optional WorkBookName As String)
Dim WS As Worksheet
On Error Resume Next
If WorkBookName = vbNullString Then
Set WS = Sheets(WorkSheetName)
Else
Set WS = Workbooks(WorkBookName).Sheets(WorkSheetName)
End If
On Error GoTo 0
DoesWorkSheetExist = Not WS Is Nothing
End Function
"오류? – user3598756
"Test_worksheet"가 완료되지 않으면 오류가 나타납니다. 나는 워크 시트가 발견되지 않을 때 정의되지 않는 변수 (chkSalFile 하위) 아래에 çhksalsheet가 있다고 생각한다. – vts
어떤 줄이 그 오류를 던지고 있습니까? 오류 메시지 상자에서 "디버그"버튼을 클릭하고 강조 표시된 해당 행을 가져옵니다. – user3598756