我正在尝试从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