我有一个For Each循环浏览工作簿的所有工作表。它执行两个操作:1.删除包含“实际”或空白行的行。 2.它在D列(13:00-21:00)中花费时间,并将其分为两列。 13:00和21:00 在sheet1上,它执行两种操作。在sheet2上,它执行第一个操作,但不执行第二个操作。
最初,我具有相同问题的“文本转栏”功能单独运行。我认为通过将其与其他子过程一起使用,它将可以正常运行。 当我运行程序时,它将执行行删除操作,然后在工作表2的sheet1上执行文本到列的操作,它将执行行删除操作,但不执行文本到列的操作。
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个工作表。他们都获得了第一个操作,但是第二个操作仅适用于第一张纸。