2

我正在尝试遍历三个下拉列表中的项目,命名范围为 A、B 和 C。摘要输出根据所选下拉列表中的项目而变化。我想复制每个摘要输出(19 行 x 15 列的表)并将它们粘贴到新工作表(工作表 3)中。

例如,如果我在列表 A 中有 3 个项目,在列表 B 中有 2 个项目,在列表 C 中有 2 个项目,我总共需要将 12 个输出 (3*2*2) 粘贴到工作表 3 中。

当我运行此代码时,我收到以下错误:

对象“_Global”的方法“范围”失败

我将不胜感激任何可能的帮助!我是 VBA 编程的新手,所以我确信有一种更有效的方法可以做到这一点......

谢谢!

Sub SummarizeData()
    '
    ' SummarizeData Macro
    '

    Dim rngCeded As Range
    Dim rngTF As Range
    Dim rngFX As Range
    Dim LOS As Integer

    Set rngCeded = Range("A")
    Set rngTF = Range("B")
    Set rngFX = Range("C")

    LOS = 19
    For n = 1 To 12
        For Each i In Range("A")
            For Each j In Range("B")
                For Each k In Range("C")
                    Sheets("Summary").Range("SummaryData").Copy
                    Sheets("Sheet3").Range("E5").Offset(i - 1, 0).PasteSpecial Paste:=xlPasteValues
                Next k
            Next j
        Next i
    n = n + LOS
    Next n
    End Sub
4

2 回答 2

1

由于您没有指定 Range 的来源 ( Set rng = Range("...")),因此代码的结果取决于您调用该方法的上下文。

最好调用特定对象的 Range 方法。在您的情况下,这可能是一个工作表对象,类似于:

' ...
Dim MySheet As Excel.Worksheet
Set MySheet = ActiveWorkbook.Sheets("MySheet")
Set rngCeded = MySheet.Range("A") 
' ...
于 2013-09-26T15:26:40.477 回答
0

您不能使用大写和小写字符“C”、“c”、“R”或“r”作为定义的名称,因为它们都用作为当前选定的单元格选择行或列的简写,当您在名称或转到文本框中输入它们。

参考

Sub SummarizeData()
    '
    ' SummarizeData Macro
    '

    Dim rngCeded As Range
    Dim rngTF As Range
    Dim rngFX As Range
    Dim LOS As Integer

    Set rngCeded = Range("A")
    Set rngTF = Range("B")
    Set rngFX = Range("D")

    LOS = 19
    For n = 1 To 12
        For Each i In Range("A")
            For Each j In Range("B")
                For Each k In Range("D")
                    Sheets("Summary").Range("SummaryData").Copy
                    Sheets("Sheet3").Range("E5").Offset(i - 1, 0).PasteSpecial Paste:=xlPasteValues
                Next k
            Next j
        Next i
    n = n + LOS
    Next n
    End Sub
于 2013-09-26T15:22:54.773 回答