Kategorie szkoleń | Egzaminy | Kontakt
  • 0
  • 3
  • 508

Drukuję długie tabele na kilka stron, w których występują sumy częściowe, (ale nie sumy częściowe wytworzone przez Excela, tylko uzyskane z zapytania ADO DB i zwrócone do Excela). Nie mogę, więc użyć funkcjonalności Excela związanych z sumami częściowymi i posługuję się makrem. Makro rozpoznaje tekst Total w kolumnie C i wstawia poniżej HPageBreak - podział strony:

Dim cellTotal    As Excel.Range

    ActiveSheet.ResetAllPageBreaks
    For Each cellTotal In Range("C6", Range("C65000").End(xlUp))
        If InStr(cellTotal.Value, "Total") > 0 And Not InStr(cellTotal(3, 1).Value, "Grand Total") > 0 And Not cellTotal.Value = "Grand Total" Then
             ActiveSheet.HPageBreaks.Add (cellTotal(3, 1))
        End If
          
        
    Next cellTotal

Czasami jednak odcinek tabeli między sumami częściowymi nie mieści się między takimi podziałami stron, Excel wstawia wtedy "automatyczny" podział strony (zaznaczony na podglądzie niebieską linią przerywaną). Niestety taki automatyczny podział strony wypada zbyt blisko twardego podziału strony wstawionego przez makro. Czy można jakoś łatwo uzupełnić powyższe makro tak, by automatyczne podziały stron nie pojawiały się tak blisko wymuszonych przez makro podziałów stron? By było to przynajmniej 3 linie przed albo 3 linie po podziale wymuszonym? "Jeżeli podział automatyczny jest bliżej niż 3 linie podziału ręcznego, wtedy odsuń podział automatyczny, aby zachowana była odległość 3 linii...".

Zastanawiam się nad czymś prostym, np. nad powtórzeniem operacji na tym samym zakresie i jeśli (if) podział nie jest pod Total, a jest w odległości od 1 do 3 rzędów powyżej lub poniżej kolejnego podziału, wtedy odsuń odpowiednio podział o 1 do 3 linii, albo przesuń na środek pomiędzy dwoma podziałami przypadającymi na linię ze słowem Total. Ale nawet nie wiem, jak rozpoznawać, czy w danej linii występuje HPageBreak i jak go przesunąć bez tworzenia skomplikowanego kodu.

W Wordzie i w programach DTP istnieje funkcja Orphan/Widow control, gdyby możliwe było postawienie takiego warunku tutaj, na pewno skorzystałoby z tego rozwiązania więcej kursantów. :-)

Z góry dziękuję za wszelkie podpowiedzi i sugestie.

 

Jacek_Kotowski
  • Zapytał
  • @ Jacek_Kotowski | 13.05.2015
    • lider
    • laureat
    • ekspert
    • 60
    • 54
    • 94