VBA Excel Вставка строки на уровне структуры 3 появляется на уровне схемы 2 - PullRequest
2 голосов
/ 24 декабря 2011

Вот проблема. Когда в подытоге есть только одна строка:

  • вставленный ряд не входит в правый уровень структуры.
  • промежуточный итог автоматически не включает вставленную ячейку.

А вот код, который вставляет строку (я определен ранее):

           For j = 2 To lEndRow * (1.5)
                If InStr(Cells(j, i), "Total") Then
                    Cells(j - 1, i).EntireRow.Insert
                    With Cells(j - 1, i)
                        .EntireRow.Font.ColorIndex = 3
                        .EntireRow.Interior.ColorIndex = 2
                    End With
                    Cells(j - 1, i).EntireRow.OutlineLevel = 2 ' This didn't work,
                         ' it puts all the inserted rows at 2 but doesn't group it
                         ' the subtotal.
                    Cells(j - 1, i + 8) = "1% Discount within terms"
                    Cells(j - 1, i + 24).FormulaR1C1 = "=Round((R[2]C[-8])*(.01),2)"
                    j = j + 1
                End If
            Next

Я полагаю, что это простая проблема, если вы это знаете. Я просто не знаю этого, и это очень расстроило меня. Счастливого первого поста для меня и счастливых вам праздников.

1 Ответ

1 голос
/ 24 декабря 2011

Это предположение, но я думаю, что стоит попробовать.

Из справки MS Об изложении рабочего листа

  • "Данные, которые должны быть изложены, должнынаходиться в диапазоне, где каждый столбец имеет метку в первой строке и содержит аналогичные факты, и в этом диапазоне нет пустых строк или столбцов [ мое выделение ]. "

В то время, когда вы устанавливаете контур, строка промежуточного итога пуста, поэтому не может быть частью диапазона.Попробуйте:

             Cells(j - 1, i + 8) = "1% Discount within terms"
             Cells(j - 1, i + 24).FormulaR1C1 = "=Round((R[2]C[-8])*(.01),2)"
             Cells(j - 1, i).EntireRow.OutlineLevel = 2

Удачи.

...