For Each 过滤数据循环返回 0 结果,没有错误

如何解决For Each 过滤数据循环返回 0 结果,没有错误

我需要在用户选择的日期之间从数据库生成一张值。日期在数据库的第 2 列中,但我需要此范围内每个日期的整行。我得到了一些建议,使用 For Each 来更轻松地使用 SpecialCells(xlCellTypeVisible)。虽然我不再收到任何错误,但我的产品工作表中也没有任何数据。有人能告诉我为什么我不返回数据吗?

Sub Generate()

Dim g As Integer
Dim h As Integer
Dim datemin As String
Dim datemax As String

datemin = CDbl(CDate(Sheets("start").Cells(15,8)))
datemax = CDbl(CDate(Sheets("start").Cells(15,9)))


Worksheets("Database").Range("A1").AutoFilter Field:=10,Criteria1:=">=" & datemin,_
        Operator:=xlAnd,Criteria2:="<=" & datemax


g = 0

For Each Row In Worksheets("database").Range("A1")
    g = g + 1
    If Cells(g,1).SpecialCells(xlCellTypeVisible) = True And Cells(g,1) <> "" Then

Sheets("product").Activate
Dim NextRow As Long
NextRow = Application.WorksheetFunction.CountA(Range("A:A")) + 10

'fill KPI
Cells(NextRow,1) = Format(Sheets("database").Cells(g,1),"mm/dd/yyyy")  'Date1
Cells(NextRow,2) = Format(Sheets("database").Cells(g,2),"mm/dd/yyyy")  'Date2
Cells(NextRow,3) = Sheets("database").Cells(g,3)  'value1
Cells(NextRow,4) = Sheets("database").Cells(g,4)  'value2
Cells(NextRow,6) = Sheets("database").Cells(g,5)  'value3
Cells(NextRow,9) = Sheets("database").Cells(g,8)  'comment
Cells(NextRow,13) = Sheets("database").Cells(g,6)  'person
    Else
        Exit For
    End If

Next

End Sub

解决方法

您只是“循环”了一个单元格 - A1。

如果您想为此使用循环,请尝试遍历数据库中的所有行并检查它们是否可见。

如果它们可见,则将相关数据复制到另一个工作表中。

Sub Generate()
Dim rngDst As Range
Dim rngSrc As Range
Dim datemin As String
Dim datemax As String
Dim g As Integer
Dim h As Integer

    datemin = CDbl(CDate(Sheets("start").Cells(15,8)))
    datemax = CDbl(CDate(Sheets("start").Cells(15,9)))


    Worksheets("Database").Range("A1").AutoFilter Field:=10,Criteria1:=">=" & datemin,_
                                                      Operator:=xlAnd,Criteria2:="<=" & datemax

    Set rngSrc = Worksheets("Database").Range("A2")
    Set rngDst = Worksheets("Product").Range("A11")
    
    Do
    
        
        If Not rngSrc.EntireRow.Hidden And rngSrc.Value <> "" Then

            'fill KPI
            rngDst.Value = Format(rngSrc.Value,"mm/dd/yyyy")  'Date1
            rngDst.Offset(,1).Value = Format(rngSrc.Offset(,1).Value,"mm/dd/yyyy") 'Date2
            rngDst.Offset(,2).Value = rngSrc.Offset(,2).Value 'value1
            rngDst.Offset(,3).Value = rngSrc.Offset(,3).Value 'value2
            rngDst.Offset(,5).Value = rngSrc.Offset(,4).Value 'value3
            rngDst.Offset(,8).Value = rngSrc.Offset(,7).Value 'comment
            rngDst.Offset(,12).Value = rngSrc.Offset(,5).Value 'person
            Set rngDst = rngDst.Offset(1,0)
        End If
        
        Set rngSrc = rngSrc.Offset(1,0)
    Loop Until rngSrc = ""

End Sub

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?