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"が完了していないとエラーが表示されます。私は、ワークシートが見つからないときにçhksalsheet(chkSalFileサブ)変数が定義されていないと思います。 – vts
どのラインがそのエラーを投げていますか?エラーメッセージボックスの「デバッグ」ボタンをクリックすると、強調表示されている行に移動します – user3598756