Ich versuche, eine Arbeitsmappenvariable "Detailwb" als eine Arbeitsmappe festzulegen, die der Benutzer mit der Application.FileDialog (MsoFileDialogFilePicker) -Funktion auswählt, aber ich erhalte die folgende Fehlermeldung: "Laufzeitfehler '9': Index außerhalb des gültigen Bereichs "in der letzten Zeile des folgenden Codes. Ich weiß, dass der Aufruf der Arbeitsmappen in diesem Format sein sollte; Arbeitsmappen ("Dateiname"), aber ich möchte, dass das Programm die .xlsx-Datei aufruft, die der Benutzer auswählt. Ich bin nur nicht sicher, was die richtige Syntax/Methode ist, um dies zu erreichen.Wie setze ich die Arbeitsmappenvariable basierend auf einem Dateinamen, den ich als String-Variable habe? (VBA)
Hier ist ein Auszug;
Private Sub CommandButton1_Click()
'Define All Variables
Dim GCell As Range
Dim fDialog As FileDialog, result As Integer
Dim Detailwb As Workbook
Dim Timewb As Workbook
Dim MyDetailReport As String
Dim MyTimeSheet As String
Dim MySheet As String
Dim ProjNum As String
Dim PhaseCode As String
Dim Hours As String
Dim WkEndDate As String
Dim FindRowNumber As Long
Dim FindColumn As Long
'Define Workbooks
Set Timewb = ThisWorkbook
'Find source file
Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
fDialog.AllowMultiSelect = False
fDialog.Title = "Select Daily Report File to Import"
fDialog.InitialFileName = "W:\PDX - Mechanical Construction\Operations\Detailing\Daily Tracking Logs\"
fDialog.Filters.Clear
fDialog.Filters.Add "Excel files", "*.xlsx"
If fDialog.Show = -1 Then
MyDetailReport = fDialog.SelectedItems(1)
End If
Workbooks.Open Filename:=MyDetailReport & MyTimeSheet
Set Detailwb = Workbooks(MyDetailReport)
Ja, was ist MyTimeSheet? Es ist nicht in dieser Subroutine definiert. Ist es eine globale Variable? Entfernen Sie "& MyTimeSheet" und sehen Sie, was passiert –