Vba 无法选择今天包含的单元格';日期

Vba 无法选择今天包含的单元格';日期,vba,excel,Vba,Excel,我正在将我的团队发送的每日报告合并到一个名为“主文件”的文件中,它将为我的每个团队成员分别提供每一页。我需要在我的团队成员发送的报告中找到包含今天日期的单元格,然后复制相应的单元格并将其粘贴到“主文件”中 这是密码 Sub Copy_data() Sheets("Daily Report").Select Range("A7").Select Dim mydate As Date mydate = Range("B1") For i = 1 To 4 't

我正在将我的团队发送的每日报告合并到一个名为“主文件”的文件中,它将为我的每个团队成员分别提供每一页。我需要在我的团队成员发送的报告中找到包含今天日期的单元格,然后复制相应的单元格并将其粘贴到“主文件”中 这是密码

Sub Copy_data()
    Sheets("Daily Report").Select
    Range("A7").Select
    Dim mydate As Date
    mydate = Range("B1")
    For i = 1 To 4 'this is sample actually i have 38 sheets
    Dim filename As Variant
    ActiveCell.Offset(1, 0).Select
    filename = ActiveCell.Value
    Workbooks.Open "C:\Users\test\Desktop\AP\" & filename
    Application.Wait (Now + TimeValue("0:00:02"))
    Sheets("Dashboard").Select
    Cells.Find(What:=mydate, After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate ' this is where i get an error as "object variable or with block variable not set"

    ActiveCell.Offset(0, 2).Select
    Dim currentcell As Integer
    currentcell = ActiveCell.Row
    Range(Selection, Cells(currentcell, 10)).Copy
    Windows("Agent Performance.xls").Activate
    Dim sheetname As String
    sheetname = ActiveCell.Offset(0, 1).Value
    Sheets(sheetname).Select

    'Here again i have to find the cell with today's date and paste the data which i copied    
    Next i

End Sub

注:-在早期阶段工作正常。在对格式和外观做了一些更改之后,我在“主文件”中添加了所有图纸,之后我收到了这个错误!!另外,我是VBA初学者,请原谅我的任何缺陷。

我尝试修复您的代码并避免所有的
。选择
/
。激活
,这可能会引起一些头痛

在你的作品中,我看不出你要粘贴到哪里,所以在最后做了一个有根据的猜测,并以此作为注释

使用
F8
逐步完成此操作,以确保其工作正常,因为您可以一次只执行一行

Sub Copy_data()
Dim newWB As Workbook, currentWB As Workbook, agentWB As Workbook
Dim dailyWS As Worksheet, dashWS As Worksheet
Dim i       As Long
Dim foundCell As Range
Dim currentcell As Integer
Dim destSheetname As String


Set currentWB = ThisWorkbook
Set dailyWS = currentWB.Sheets("Daily Report")
Dim mydate  As Date
mydate = dailyWS.Range("B1")
For i = 1 To 4               'this is sample actually i have 38 sheets
    Dim filename As Variant
    filename = dailyWS.Range("A7").Offset(1, 0).Value
    Set newWB = Workbooks.Open("C:\Users\test\Desktop\AP\" & filename)
    Application.Wait (Now + TimeValue("0:00:02"))
    Set dashWS = newWB.Sheets("Dashboard")
    Set foundCell = dashWS.Cells.Find(What:=mydate, After:=ActiveCell, LookIn:=xlFormulas, _
                                      LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                                      MatchCase:=False, SearchFormat:=False)

    currentcell = foundCell.Offset(0, 2).Row
    dashWS.Range(foundCell.Offset(0, 2), dashWS.Cells(currentcell, 10)).Copy
    Set agentWB = Workbooks("Agent Performance.xls")
    destSheetname = agentWB.Sheets(ActiveSheet).Range("A1").Offset(0, 1).Value 'Do you know the activesheet name? If so use it here instead.
    agentWB.Sheets(destSheetname).Activate
    ''' Is this where you want to paste??
    agentWB.Sheets(destSheetname).Range("A1").Paste

    'Here again i have to find the cell with today's date and paste the data which i copied
Next i

End Sub

代替
xlFormulas
查看
xlValues
感谢您的回复,但是收到了相同的错误!!什么错误,在哪一行?在同一行“Cells.Find(What:=mydate,After:=ActiveCell,LookIn:=xlValues,LookAt:=xlPart,SearchOrder:=xlByRows,SearchDirection:=xlNext,MatchCase:=False,SearchFormat:=False)。激活”@David系统提供的错误代码和错误名称是什么?非常感谢Bruce的帮助!!!我真的很感激!!成功了@大卫-很高兴它成功了!仅供参考,我认为我所做的主要是去掉
。选择
/
。激活
,并使用变量直接处理数据。我相信您的主要错误是无法执行
。请使用
单元格选择
。查找()。这就是为什么我将范围变量设置为等于
.Find()
。您可以在该行之后执行
foundCell。如果您确实想选择它,请选择
,以供参考。但通常不需要实际选择单元格(尽管我确实使用了
。在使用
F8
调试时经常选择
,以确保使用了正确的单元格)。(@David-如果它确实有效,您可以通过单击帖子左侧上下箭头下的复选标记将其标记为“答案”)。