VBA,对于循环删除行,循环正在跳过行

时间:2018-10-22 18:06:50

标签: excel vba excel-vba

我有以下For循环。应该删除所有import imaplib import email from email.parser import HeaderParser from email.header import decode_header imap = imaplib.IMAP4_SSL("imap.domainname.com", port=993) imap.login('mail@domainname.com','mypassword') imap.select(mailbox = 'INBOX' , readonly = True) resp, items = imap.uid("search", None, 'All') email_ids = items[0].split() mailparser = HeaderParser() for e, msg_uid in enumerate(reversed(email_ids)): resp, data = imap.uid('fetch', msg_uid, "(RFC822.HEADER)") email_body = data[0][1] mail = email.message_from_bytes(email_body) email_from = decode_header(mail["From"])[0][0] email_subject = decode_header(mail["Subject"])[0][0] email_date = dateutil.parser.parse( mail['Received'][-26:]) print(email_from, email_subject, '\nT:', email_date) print('\n') if e > 20: break 的行。
它正在删除行,但是当有行像图片一样时,代码将跳过其中之一并删除其中之一。

enter image description here

.

任何人都可以帮助删除包含For row_num = 8 To max_row page_title = Sheets("Stack").Range("C" & row_num + 1).value If page_title = " ....................................................................................................................................................................................................................................................................................................." Then Sheets("Stack").Range("C" & row_num + 1).EntireRow.delete End If Debug.Print page_title Next row_num 的连续行吗?

1 个答案:

答案 0 :(得分:1)

这是因为例程的逻辑。例如,如果删除第5行,那么第6行将是第5行,依此类推,因此将不读取第6行。要删除该行,请尝试将该列的值设置为空

Sheets("Stack").Range("C" & row_num + 1).EntireRow = Empty

您将看到所有行都将被读取。

完成后,您可以告诉excel / vba根据一列对matriz进行整理,因此末尾将排空行,也就是说,它将成为工作表中其余空白空间的一部分