.Cells中返回的行不正确(.Rows.Count,1).End(xlUp).Row

时间:2017-10-03 19:53:19

标签: excel vba excel-vba

我正在尝试从Access运行Excel中的VBA。用户将数据输入到Access中的表中,并将表导入到Excel(“TableData1”)中的表中,其中存在各种图表和数据透视表。打开Excel电子表格时,将使用数据库中的最新数据刷新表。然后将该表过滤为“上个月”。

但是,当我尝试找到在我的过滤表上输入数据的最后一行时,Excel会在打开电子表格时返回最后一行,而不是在刷新和过滤器发生后的最后一行。我不确定我是否错过了这里的一步,或者我是否编错了。我尝试了一些不同的“最后一行”方法,所有这些方法都返回了错误的行号。

这个表中有几年的数据,我上个月(现在是2017年9月)过滤了。我已经在下面summaryrow尝试了许多代码中的2个(一个注释掉了)。两者都在刷新之前返回旧行(1072),它应该是1089.请记住,刷新和过滤器确实有效,它会在表格上显示正确的数据。

Function RunMyReport()

Dim xlApp As Excel.Application
Dim xlWB As Excel.Workbook

Dim wsTable As Worksheet

Dim SummaryRow As Long

Set xlApp = New Excel.Application
    With xlApp
        .Visible = True
        Set xlWB = .Workbooks.Open("C:\MyPath\MySpreadsheet.xlsx")
    End With


    Set wsTable = xlWB.Worksheets("Table") 'The name of the worksheet I am working in

    With wsTable
        .Activate
        .ListObjects("TableData1").Refresh 'Refresh for the most recent data
        .ListObjects("TableData1").Range.AutoFilter _
            Field:=1, Criteria1:=xlFilterLastMonth, Operator:= _
            xlFilterDynamic 'Filters the data table to last month
        SummaryRow = Cells.Find(What:=” * ”, SearchOrder:=xlRows, _
            SearchDirection:=xlPrevious, LookIn:=xlValues).Row
        'SummaryRow = .Cells(.Rows.Count, 1).End(xlUp).Row 'find the Summary row

    End With
    MsgBox SummaryRow

End Function

0 个答案:

没有答案