如何修改VBA代码仅依据Sheet5的H列日期将行复制到Sheet8
解决VBA筛选H列今日日期并复制行的问题
原代码的问题在于遍历了每行的所有单元格,导致只要G列或H列出现今日日期就会复制整行,不符合你只看H列的需求。下面是修改后的正确代码:
Sub dueOutToday() Sheet8.Range("A2:U50").Clear Dim todaysDate As Date Dim rngData As Range Dim rngRow As Range Dim counter As Integer todaysDate = Date counter = 1 Set rngData = Sheet5.UsedRange For Each rngRow In rngData.Rows ' 直接定位当前行的H列单元格,判断是否等于今日日期 If rngRow.Cells(, "H").Value = todaysDate Then rngRow.Copy Sheet8.Rows(counter).Columns(1) counter = counter + 1 End If Next End Sub
关键修改说明:
- 删掉了遍历每行所有单元格的内层循环,直接通过
rngRow.Cells(, "H")定位到当前行的H列单元格,避免检查其他列 - 只对H列单元格的日期进行判断,符合条件才复制整行到Sheet8
你之前尝试的写法问题:
Set rngRow = Range("H", col):语法错误,Range的引用格式不对,无法正确定位到H列的行If Range("H",col).Value = todaysDate Then:同样是Range引用错误,没有关联到当前循环的行,无法准确判断每行H列的日期
内容的提问来源于stack exchange,提问作者nickC
相关产品推荐
相关产品推荐

