Когда в макросе диапазона есть пустая ячейка, выход из For ¿Как избежать этого? - PullRequest
0 голосов
/ 16 февраля 2019

Не знаю, в этом ли проблема, но я пришел к выводу, что пришел.

Когда в макросах диапазона обнаружена пустая ячейка, выход из цикла FOR, но это может быть другойпроблема.

В любом случае мне хотелось бы узнать причину и узнать, как ее решить, поскольку у меня нет опыта работы с vba.

С помощью этого кода можно найти файл в каталоге(имя маршрута по переменной strLocation, которое также содержит имя файла из столбца D), если столбец E (столбец электронной почты, используемый в качестве диапазона) заполнен, то не возникает проблем, но при наличии пустой ячейки происходят странные вещи.Показать сообщение об ошибке и пропустить следующую ячейку для выхода For.

Например, в листе Excel:

FILE_NAME (ячейка D) | Электронная почта (ячейка E)

filename_1 |example@hotmail.com

          |  example@hotmail.com

filename_3 |

filename_4 |example@gmail.com

filename_5 |example@gmail.com

Когда показывать сообщение, в котором не указано имя файла в строке 2, после перехода в конец кода, выходящего из Для каждого, не делать следующую ячейку в строке 3. (Считая из строки 1 после заголовка, RangeE2 ...)

'Comprobador PDF
Private Sub comprobar_pdf_Click()

Dim Secfolder As String
Dim Rango As Range, i As Long, cell As Range

With Worksheets("Formacion-Acreditaciones")
    Set Rango = .Range("E2", .Range("E2").End(xlDown)).SpecialCells(xlCellTypeVisible)
End With

Application.ScreenUpdating = False

Dim strLocation As String
For Each cell In Rango
    i = cell.Row
    strLocation = f_ruta.Value & "\" & Worksheets("Formacion-Acreditaciones").Cells(cell.Row, "D").Value & ".pdf"

    If Dir(strLocation) <> "" Then                                  

    Else
        MsgBox "Not Found, No se encuentra el archivo PDF adjunto correspondiente a: " & vbCrLf & cell.Offset(0, -1).Value & vbCrLf & cell.Offset(0, -3).Value & ", " & cell.Offset(0, -4).Value & vbCrLf & vbCrLf & "Anótelo ahora y envíelo más tarde de forma manual con su gestor de correo.", vbExclamation, "Error Archivo adjunto"

        GoTo next_comprobacion

    End If

next_comprobacion:

Next cell
Application.ScreenUpdating = True

MsgBox "Finished, Comprobación de existencia de archivos PDF finalizada.", vbInformation, "Comprobación Archivo adjunto"

End Sub

Я ожидаю, что когда ячейка в диапазоне (столбец E), независимо от того, содержит ли она данные или нет, и считается равным как строка.Поскольку я хочу сравнить имя столбца D с именем файла в каталоге, чтобы позже отправить его в виде вложения по электронной почте.

Вот мой полный код: https://github.com/arv187/vba/issues/5#issue-411066359 Заранее спасибо.

1 Ответ

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

Вы хотите подняться снизу листа, так как xlDown остановится с первого пробела

With Worksheets("Formacion-Acreditaciones")
    Set Rango = .Range("E2:E" & .Cells(.rows.Count, "E").End(xlUp).Row).SpecialCells(xlCellTypeVisible)
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...