首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Excel 2003 VBA -定位日期和移动相关数据

Excel 2003 VBA -定位日期和移动相关数据
EN

Stack Overflow用户
提问于 2010-12-02 03:55:32
回答 1查看 699关注 0票数 0

我需要自动化一个不是一次性事件的流程,大约500个设施,每个设施都有100+资产,这些资产都计划在全年不同的日期完成。我有一个工作簿和我的主/源工作表以及12个月的工作表(1月,2月,3月,...12月)。我需要的是某种代码,它允许我搜索特定的日期,并将它以及其他相同行的对应数据发送到适当的工作表。

例如,我有一项资产将于2011年6月17日到期进行维护。我需要Excel仅使用月份进行搜索,并将该资产及其名称、说明、成本等移动到6月选项卡中。我设法让它找到了搜索"6/“的资产,但它找不到日期为6/17/11的资产。它复制所有需要的数据,并尝试将其移动到适当的工作表,当它进行此尝试时,会弹出Microsoft Visual Basic错误代码400。有什么想法吗?感谢大家的帮助。

EN

回答 1

Stack Overflow用户

发布于 2010-12-02 22:19:26

看看这是否有帮助..。

代码语言:javascript
复制
Private Sub FindCells()
    '' step 1, find all the rows containing your date (June 2011 dates hardcoded in this example)
    Dim CollectionOfRowRanges As New Collection
    Dim ws As Worksheet
    Dim rgCell As Range
    For Each ws In ThisWorkbook.Worksheets
        For Each rgCell In ws.UsedRange.Cells
            If IsDate(rgCell.Text) Then
                If Month(CDate(rgCell.Value)) = 6 And Year(CDate(rgCell.Value)) = 2011 Then
                    '' for debugging only ... watch and make sure it stops at the right places
                    ws.Activate
                    rgCell.Select
                    Stop
                    '' end of debug code
                    Call CollectionOfRowRanges.Add(rgCell.EntireRow)
                End If
            End If
        Next rgCell
    Next ws
    '' step 2, copy the rows to a new wb
    Set ws = Workbooks.Add.Sheets(1)
    ws.Name = "June 2011 Rows"
    Dim rgRow As Range
    Set rgCell = ws.Cells(1, 1)
    For Each rgRow In CollectionOfRowRanges
        Call rgRow.Copy
        Call rgCell.EntireRow.PasteSpecial(xlPasteValues)
        Set rgCell = rgCell.Offset(1)
    Next rgRow
End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4328477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档