2013-09-26 3 views
2

Я пытаюсь перебрать элементы в трех выпадающих списках с именованными диапазонами A, B и C. Сводный вывод изменяется на основе элементов в раскрывающемся списке список выбран. Я хотел бы скопировать каждый итоговый результат (таблица из 19 строк по 15 столбцов) и вставить их в новый лист (лист 3).Метод «Диапазон» объекта «_Global» не удался

Например, если у меня было 3 элемента в списке A, 2 элемента в списке B и 2 элемента в списке C, у меня было бы всего 12 выходов, которые мне нужны (3 * 2 * 2), вставленные в лист 3.

Когда я запускаю этот код, я получаю следующее сообщение об ошибке:

Метод «Range» объекта «_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», «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

'Range ("A") Select' терпит неудачу –

+1

@mehow Сначала определите именованный диапазон с А, то он будет работать. – Santosh

1

Поскольку вы не указываете, где диапазон происходит от (Set rng = Range("...")), результат кода зависит от контекста вызова метода.

Лучше всего вызвать метод Range для определенного объекта. В вашем случае, это может быть рабочий лист-объект, похожий на этот:.

' ... 
Dim MySheet As Excel.Worksheet 
Set MySheet = ActiveWorkbook.Sheets("MySheet") 
Set rngCeded = MySheet.Range("A") 
' ... 
Смежные вопросы