Excel 2003 VBA Найдите и скопируйте на новый рабочий лист

Я пытаюсь получить этот код, чтобы найти любую дату в декабре и скопировать ее на лист в той же книге. LSheetL — моя декабрьская вкладка. Я также создал другие вкладки за 11 месяцев, и мне придется дублировать этот фрагмент кода для каждого месяца, есть ли более простой/более консолидированный способ добиться ежемесячного сканирования/копирования/вставки в соответствующую вкладку? -- Моя проблема в том, что всякий раз, когда я выполняю этот код, он выдает "Microsoft Visual Basic - Ошибка времени выполнения "1004" - Ошибка, определяемая приложением или объектом". Любые идеи? Я думаю о том, чтобы очистить этот код и использовать другой подход, но я хотел бы посмотреть, сможем ли мы это проработать, прежде чем просто пропустить. Мне также сказали, что активация разных листов - не самый "красивый" метод получения данных отсюда туда, есть ли более красивый способ выполнить эту функцию? Спасибо за любую помощь.

[код]

While LContinue = True

    LastRow = Cells(65535, "q").End(xlUp).Row

        If Month(Range("Q" & CStr(LRow)).Value) = 12 Then

        Range("E" & CStr(LRow) & ",G" & CStr(LRow) & ",K" & CStr(LRow) & ",O" & CStr(LRow) & ",P" & CStr(LRow) & ",Q" & CStr(LRow) & ",AK" & CStr(LRow)).Select
        Selection.Copy

            Sheets(LSheetL).Activate
            Range("A" & CStr(LCurPRow)).Select
            Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
            Range("A1").Select

            LCurPRow = LCurPRow + 1

            Sheets(LSheetMain).Activate

        End If

    LRow = LRow + 1

Wend

MsgBox "The copy has completed successfully."

[/код]


person Cramit02    schedule 22.12.2010    source источник
comment
Кажется, какой-то код инициализации отсутствует   -  person Dr. belisarius    schedule 22.12.2010


Ответы (1)


Сначала, пожалуйста, опубликуйте весь код, так будет легче найти проблему. Тогда я не вижу, когда вы меняете условие вашего цикла while, поэтому в основном цикл никогда не заканчивается.

LastRow = Cells(65535, "q").End(xlUp).Row Эта строка кажется мне неправильной, метод Cells принимает два числа в качестве параметров, поэтому "q", вероятно, является причиной этой ошибки. Для этого используйте диапазон методов следующим образом: Range("Q65535") или Cells(65535,17)

person Erwan Leroux    schedule 26.12.2010