遍历下拉列表

时间:2019-08-26 19:20:21

标签: vba

我有两个电子表格。电子表格#1显示25个项目的列表(在单元格A4:A28中)。电子表格#2是一个计算工作簿,在下拉列表中具有25个项目的相同列表。下拉列表位于单元格B7中。每次在此下拉列表中更新选择时,电子表格2都会更新。我想做的是遍历电子表格2下拉列表中的每个选择,并复制总行的总和(行C68:Q68),然后将其粘贴到电子表格#1中,用于对应的项(单元格B4中的第一项)名单)。然后移至列表中的第二项,依此类推。

我有以下代码:

Sub loopthroughvalidationlist()
    Dim inputRange As Range
    Dim c As Range
    Set inputRange = Evaluate(ActiveWorkbook("Spreadsheet2").Worksheet("Tab2").Range("B7").Validation.Formula1)
        For Each c In inputRange
        ActiveWorkbook("Spreadsheet1").Worksheets("Tab1").Range("B4").Value = Application.Sum(ActiveWorkbook("Spreadsheet1").Worksheet("Tab1").Range(Cells(68, 3), Cells(68, 17)))

        Next c
End Sub

我很难在两张纸之间移动,而实际上无法遍历电子表格中的列表。

1 个答案:

答案 0 :(得分:0)

我相信这是因为在访问Cells对象时,您所使用的表并不明确。它默认为ActiveWorkbook,它可能是必需的,也可能不是。尝试这样的事情,看看是否可行。

Sub loopthroughvalidationlist()
    Dim inputRange As Range
    Dim c          As Range
    Dim ws1        As Worksheet
    Dim ws2        As Worksheet

    Set ws1 = Workbooks("Spreadsheet1").Worksheets("Tab2")
    Set ws2 = Workbooks("Spreadsheet2").Worksheets("Tab2")

    Set inputRange = Evaluate(ws2.Range("B7").Validation.Formula1)

    For Each c In inputRange
        '.Cells will use whatever the activeworkbook is,
        'it is preferable to be explicit which sheet you want to work with
        ws1.Range("B4").Value = Application.Sum(ws2.Range(ws2.Cells(68, 3), ws2.Cells(68, 17)))
    Next
End Sub