将范围设置为自动筛选后的表格列,Excel VBA
我刷新仪表板的部分工作包括过滤ODBC查询表以仅显示某些项目,然后将这些项目ID复制到同一工作簿中的另一个选项卡。因为项目的顺序和过滤结果随着查询的每次刷新而改变,所以我很难定义要复制的项目ID的范围 我尝试了下面的代码,结果只复制了复制到显示表每一行的查询表中的第一个值。我还尝试过通过单元格引用而不是表引用引用来引用范围,这导致了相同的结果将范围设置为自动筛选后的表格列,Excel VBA,excel,vba,Excel,Vba,我刷新仪表板的部分工作包括过滤ODBC查询表以仅显示某些项目,然后将这些项目ID复制到同一工作簿中的另一个选项卡。因为项目的顺序和过滤结果随着查询的每次刷新而改变,所以我很难定义要复制的项目ID的范围 我尝试了下面的代码,结果只复制了复制到显示表每一行的查询表中的第一个值。我还尝试过通过单元格引用而不是表引用引用来引用范围,这导致了相同的结果 Public Sub EPC_test() Dim wb As Workbook Dim ws As Worksheet Set wb = Activ
Public Sub EPC_test()
Dim wb As Workbook
Dim ws As Worksheet
Set wb = ActiveWorkbook
Set ws = wb.Sheets("projects_master")
'filter query table to show qualifying projects
Set ws = wb.Sheets("projects_master")
Dim i As Integer, lo As ListObject
Set lo = wb.Sheets("projects_master").ListObjects(1) 'lo = query table
i = Application.WorksheetFunction.Match("Display Tab?", wb.Sheets("projects_master").Range("A1:ZZ1"), 0)
lo_PM.Range.AutoFilter Field:=i, Criteria1:="1"
'update range with qualifying project IDs
Set ws_m = wb.Sheets("projects_master")
Set ws_BP = wb.Sheets("Display")
Set range1 = ws_m.Range("projects_master[ID]").Rows.SpecialCells(xlCellTypeVisible)
Set range2 = ws_BP.Range("Display[ID]")
'copy values from query to display
range2.Value = range1.Value
“Display”是工作表的名称,还是该工作表上的
ListObject
/表的名称,或者两者都是?我不认为“Display[ID]”和“projects\u master[ID]”是命名范围的有效名称。这些是列标题吗?@MathieuGuindon display是工作表的名称和该工作表上的列表对象。@Comintern是的,这些是表标题。通过单元格引用来引用范围是否更好?与其使用工作表.range
,不如尝试通过列表对象
API,例如设置range2=ws\u BP.ListObjects(“Display”).ListColumns(“ID”).DataBodyRange