循环显示工作表并根据动态工作表引用执行计算

时间:2014-06-30 19:56:26

标签: excel vba loops dynamic reference

是否可以遍历工作表列表并执行一些具有来自不同工作表列表的工作表引用的计算?例如,您有一个工作表的列表(列表1),它将是计算的目标,并且您有第二个计算所基于的工作表列表(列表2)。因此,假设列表1中有sheet1和sheet2,列表2中有sheetA和sheetB。基于sheetA的计算将出现在sheet1中,基于sheetB的计算将出现在sheet2中。我认为代码看起来像这样:

Sub LoopthroughWorksheets()
Dim sheet_name As Range
Dim sheet_name2 As Range
Set sheet_name2 = Sheets("WS").Range("F:F")
For Each sheet_name In Sheets("WS").Range("C:C")
    If sheet_name.Value = "" Then
        Exit For
    Else
        With Sheets(sheet_name.Value)
                .Range("K1") = .Range("sheet_name2.Value!A14").Value
        End With
    End If
    Next sheet_name
End Sub

我在此行收到“运行时错误'1004:应用程序定义或对象定义错误”:.Range("K1") = .Range("sheet_name2.Value!A14").Value

非常感谢任何帮助。

问候,

1 个答案:

答案 0 :(得分:1)

是的,这是可能的,但你的代码是错误的。

您必须以某种方式迭代C和F列,然后检索匹配的工作表名称:

Sub LoopthroughWorksheets()
    Dim sheet_name As Range
    Dim sheet_name2 As Range
    Set sheet_name2 = Sheets("WS").Range("F:F")
    ' NEW
    Dim counter As Long
    counter = 1

    For Each sheet_name In Sheets("WS").Range("C:C")
        If sheet_name.Value = "" Then
            Exit For
        Else
            With Sheets(sheet_name.Value)
                .Range("K1").Value = Sheets(sheet_name2(counter, 1).Value).Range("A14").Value
                ' NEW                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                   
                counter = counter + 1
            End With
        End If
    Next sheet_name
End Sub