У меня есть электронная таблица, с которой пользователи могут взаимодействовать, чтобы указать путь к 4 различным файлам, которые необходимо открыть для запуска некоторых макросов.Код включает в себя проверку, чтобы убедиться, что введенный путь к файлу является действительным или нет (работает отлично).Тем не менее, я хочу, чтобы окно сообщения появлялось, если что-то не работало, а также сообщать пользователю, какое из них не работало.
Мой код делает это отлично (хотя я думаю, чтодовольно запутанный способ) однако, так как массив имеет 4 значения, это означает, что если конечный файл отсутствует, он начинает текст на 4 строки вниз в окне сообщения, а не сверху.
Я хочу сделать, по-моему, ReDim
массив только с тем количеством отсутствующих файлов, чтобы MsgBox
не было на 3 пустых строки ниже первого предложения.Я вроде как понял это, но я просто не мог заставить его работать должным образом, и теперь я в замешательстве.
Sub Open_month_0()
On Error GoTo ErrHand
ThisWorkbook.ActiveSheet.Calculate
Dim i As String
Dim j As String
Dim k As String
Dim l As String
Dim m As String
Dim n As String
Dim o As String
Dim p As String
Dim arr(4) As Variant
Dim File_Missing As Integer
'Used as a counter to prompt either an error or successful result
File_Missing = 0
i = Range("LUX_Full_file_path")
j = Range("LUX_Full_file_name")
k = Range("JUP_Full_file_path_M")
l = Range("JUP_Full_file_name_M")
m = Range("JUP_Full_file_path_Q")
n = Range("JUP_Full_file_name_Q")
o = Range("JUP_Full_file_path_A")
p = Range("JUP_Full_file_name_A")
'The if not's check to see if the file path is valid. If it isn't, gets added to array and File_missing begins
If Not Dir(i, vbDirectory) = vbNullString Then
Workbooks.Open (i)
Windows(j).Visible = False
Else
arr(1) = "Lux file"
File_Missing = File_Missing + 1
End If
If Not Dir(k, vbDirectory) = vbNullString Then
Workbooks.Open (k)
Windows(l).Visible = False
Else
arr(2) = "Monthly file"
File_Missing = File_Missing + 1
End If
If Not Dir(m, vbDirectory) = vbNullString Then
Workbooks.Open (m)
Windows(n).Visible = False
Else
arr(3) = "Quarterly file"
File_Missing = File_Missing + 1
End If
If Not Dir(o, vbDirectory) = vbNullString Then
Workbooks.Open (o)
Windows(p).Visible = False
Else
arr(4) = "Annual file"
File_Missing = File_Missing + 1
End If
'Basic error handling procedure that retains function.
If File_Missing > 0 Then
MsgBox ("The following files could not be found. Please check the file paths and try again" & vbCrLf & Join(arr, vbCrLf))
Else
MsgBox "Files opened successfully."
End If
Exit Sub
ErrHand: MsgBox "There has been a critical error with opening the chosen workbooks. If the problem persists, please contact your administrator for assistance."
End Sub
Редактировать с изображениями:
Снимок экрана текущего вывода окна сообщения

Как бы я хотел, чтобы окно сообщения выглядело
