Как получить этот код массива для вывода в моем окне сообщения правильно? - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть электронная таблица, с которой пользователи могут взаимодействовать, чтобы указать путь к 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

Редактировать с изображениями:

Снимок экрана текущего вывода окна сообщения
A screenshot of the message box current output

Как бы я хотел, чтобы окно сообщения выглядело
How I'd like the message box to look

1 Ответ

0 голосов
/ 26 февраля 2019

Поскольку вы просто используете этот массив для Join, позже вы также можете просто использовать String переменную MyMissingFiles вместо этого массива и добавить имя файла.

Вам даже не нужнопосчитать файлы в File_Missing, если это число вас не интересует.

Dim MyMissingFiles As String

If Not Dir(i, vbDirectory) = vbNullString Then
    Workbooks.Open (i)
    Windows(j).Visible = False
Else
    MyMissingFiles = MyMissingFiles & vbCrLf & "Lux file"
End If

' … all the others accordingly here …

If MyMissingFiles <> vbNullString Then
    MsgBox ("The following files could not be found. Please check the file paths and try again" & MyMissingFiles)
Else
    MsgBox "Files opened successfully."
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...