Цикл «Часть для каждого» не выполняется при запуске, но выполняется в течение одного шага - PullRequest
0 голосов
/ 05 июня 2019

У меня есть For Each для циклического просмотра всех листов рабочей книги. Он выполняет две операции: 1. удаляет строки, содержащие «фактические» или пустые строки. 2. Это занимает время в столбце D (13: 00-21: 00) и разбивает его на два столбца. 13:00 и 21:00 На листе 1 он выполняет обе операции. На листе 2 он выполняет первую операцию, но не вторую.

Первоначально у меня была функция Text To Column, запущенная отдельно с той же проблемой. Я думал, что, перенеся его с другой подпроцедурой, он будет работать правильно. Когда я запускаю программу, она выполняет операцию удаления строки, затем выполняет операцию преобразования текста в столбец на листе 1 на листе 2, она выполняет операцию удаления строки, но не операцию преобразования текста в столбец.

Dim WS As Worksheet
Dim LastRow As Long

For Each WS In Worksheets
    For i = WS.Cells(WS.Rows.Count, "A").End(xlUp).Row To 16 Step -1
        If WS.Cells(i, 1) = "Actual:" Or WS.Cells(i, 1) = "" Then
            'Delete Rows containing Actual: or empty rows
             WS.Rows(i).EntireRow.Delete
        End If
    Next i
    LastRow = WS.Range("d" & Rows.Count).End(xlUp).Row
  Range("d16:D" & LastRow).TextToColumns DataType:=xlDelimited, _
      Tab:=True, Other:=True, OtherChar:="-", TrailingMinusNumbers:=True

        Next WS

Нет сообщений об ошибках, просто завершается подпроцедура и продолжается. Он также работает с 11 листами. Все они получают первую операцию, но вторая операция работает только на первом листе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...