我正在尝试遍历三个下拉列表中的项目,其中包含命名范围A,B和C.摘要输出根据所选下拉列表中的项目而更改。我想复制每个摘要输出(19行乘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
答案 0 :(得分:1)
由于您没有指定Range来自哪里(Set rng = Range("...")
),因此代码的结果取决于您调用该方法的上下文。
最好调用特定对象的Range方法。在您的情况下,这可能是一个Worksheet对象,类似于:
' ...
Dim MySheet As Excel.Worksheet
Set MySheet = ActiveWorkbook.Sheets("MySheet")
Set rngCeded = MySheet.Range("A")
' ...
答案 1 :(得分: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