Петля отлично работает на одном листе, с трудом пробираясь через книгу.

У меня есть книга с несколькими листами, и я пытаюсь обнаружить числа на C9: C200 и скопировать их в ячейку с тремя столбцами – для каждого листа, начиная с 7-го. Код в самом удаленном forloop отлично работает на одном листе, но я получаю сообщение об ошибке, когда пытаюсь его прокрутить через остальные листы. Я думаю, у меня две проблемы:

  1. Я не уверен, как отскакивать диапазон c9: c200 от листа до листа, когда он перебирает книгу

  2. Я думаю, мне нужно сказать VBA, чтобы сбросить оценки, чтобы он начинался с нуля на следующем листе.

Я иду в правильном направлении с этим?

Благодаря!

Sub MoveQtrLoop ()

Dim CEL As Range Dim RNG As Range Dim I As Integer Dim WrkSht As Worksheet Dim WS_Count As Integer I = 0 WS_Count = ActiveWorkbook.Worksheets.Count For Each WrkSht In ActiveWorkbook.Worksheets I = I + 1 If 6 < I < WS_Count Then Set RNG = ActiveSheet.Range("c9:C200") For Each CEL In RNG If CEL.HasFormula = True Then CEL.Offset(, 3) = CEL.Value ElseIf IsNumeric(CEL) = True Then CEL.Offset(, 3) = CEL.Value Else End If ****ERR. OCCURS HERE**** Next CEL Else End If Next WrkSht 

End Sub

Когда вы объявляете свой диапазон, вы делаете его на основе ActiveSheet, но вы не активируете следующие листы через каждый цикл. Но вместо использования ActiveSheet просто установите целевой диапазон с помощью переменной WrkSht:

 Set RNG = WrkSht.Range("c9:C200") 

Надеюсь, это решит вашу проблему.

Это не цикл, потому что вы используете ActiveSheet . Измените его на:

 Dim CEL As Range Dim RNG As Range Dim I As Integer Dim WrkSht As Worksheet Dim WS_Count As Integer I = 0 WS_Count = ActiveWorkbook.Worksheets.Count For Each WrkSht In ActiveWorkbook.Worksheets I = I + 1 If 6 < I < WS_Count Then Set RNG = wrksht.Range("c9:C200") For Each CEL In RNG If CEL.HasFormula = True Then CEL.Offset(, 3) = CEL.Value ElseIf IsNumeric(CEL) = True Then CEL.Offset(, 3) = CEL.Value Else End If Next CEL Else End If Next WrkSht End Sub 
  • Excel Если нужна формула формулы соответствия
  • Excel: если дата + дни = определенный день недели, тогда
  • Формула или макрос для группировки клеток в соответствии с их значениями
  • excel array formula, если результат зависит от строки?
  • Копировать ячейки с использованием IF для непустых значений
  • Если цикл «iserror» FOR с переменным типом объекта
  • Как скопировать ячейку из одной таблицы в другую на основе критериев в целевом листе
  • Функция IF с тремя условиями
  • Excel -VBA помогает, защищает и удаляет защищенные ячейки в соответствии с выбором списка
  • SUMIF игнорирует отрицательное число
  • Вложенные / множественные функции IF в excel, как я могу?
  • Interesting Posts

    Форматирование листа Excel после экспорта доступа к протоколу ms (VBA)

    Контроль макросов IE

    Показывать дату последнего обновления от OLEDB

    Как суммировать рабочее время в excel динамически?

    Apache POI не может форматировать заполненные ячейки как числовые

    Минимальная / максимальная требуемая прибыль в день

    Стандартизация гетерогенных данных возраста в SPSS или Excel

    «Заблокировать» книгу Excel для VSTO в C #

    Поместите формулу в каждую ячейку в столбце N, для которой есть значение, равное двум столбцам слева

    ASP.NET – datatable to excel – изменить формат даты

    код, чтобы найти сумму непрерывных непустых ячеек в столбце excel до появления пустой ячейки?

    Countif активный диапазон, а не предопределенный диапазон

    Excel: использование возвращаемого значения логического теста в качестве возвращаемого значения функции IF

    C # Как обнаружить Alt + Enter из ячейки Excel и импортировать в SQL Server

    Удалить специальные символы в excel vba

    Давайте будем гением компьютера.