2013-09-26 136 views
2

我試圖循環遍歷三個下拉列表中的項目,命名範圍爲A,B和C.摘要輸出基於下拉菜單中的項目列表選擇。我想複製每個彙總輸出(19行15列的表格)並將它們粘貼到一張新的工作表(工作表3)中。對象'_Global'的方法'範圍'失敗

例如,如果我在列表A中有3個項目,列表B中有2個項目,列表C中有2個項目,我將總共需要12個輸出(3 * 2 * 2)粘貼到Sheet 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

不能使用的大寫和小寫字符「C」,「C」,「R」,或「r」爲所定義的名稱,因爲它們都是用作速記用於選擇行或列當您在「名稱」或「轉到」文本框中輸入當前所選單元格時。

Reference

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 
+0

'範圍(「A」)Select'失敗 – 2013-09-26 15:32:33

+1

@mehow首先定義與那將工作中的命名範圍。 – Santosh

1

既然你不指定的範圍來源於(Set rng = Range("...")),代碼的結果取決於你調用該方法的上下文。

最好調用特定對象的Range方法。在你的情況,這可能是一個工作表對象,與此類似:

' ... 
Dim MySheet As Excel.Worksheet 
Set MySheet = ActiveWorkbook.Sheets("MySheet") 
Set rngCeded = MySheet.Range("A") 
' ... 
相關問題