Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Excel - Zmiana zakresu wydruku od wartości komórek

04 Lut 2013 08:13 2814 6
  • Poziom 2  
    Witam, mam następującą zagwozdkę.
    W arkuszu nr 1 mam wzór dokumentu w którym podaję liczbę sztuk towaru od 1-34.

    Na podstawie tej ilości towaru w arkuszu 2 generują mi się formularze (1 szt jeden formularz, 10 sztuk 10 formularzy) każdy formularz na stronę A4.
    Formularze generują się (a właściwie pojawiają i znikają) na skutek użycia funkcji jeżeli(liczba towaru = x; wyświetl to i to;"")

    Czyli jeżeli mam np 10 sztuk to mam 10 formularzy wyświetlanych i 24 "puste strony"
    No właśnie z tym że przy wydruku one nie są rozpoznawane jako puste bo zawierają formuły (których wynikiem jest "").

    Czy istnieje sposób na powiązanie obszaru wydruku/filtrowania czy jakiejś innej funkcji tak że jeżeli będzie podana liczba 10 to do wydruku pójdzie 10 stron, następnie jeżeli zmienię na 5 to 5 i jeżeli znowu 15 to 15?

    Z góry dziękuję za ewentualne odpowiedzi.
  • Poziom 23  
    Moim zdaniem jest na to sposób jaki akurat w podobnej sytuacji ja wykorzystuję. Jednak musisz zrobić w VBA opcje ukrywania niepotrzebnych formularzy. Ukrycie niepotrzebnego formularza spowoduje że zostanie on wyłączony z obszaru wydruku. Mam rozumieć że formularze są w jednym arkuszu jeden pod drugim lub jeden obok drugiego? Musiałbyś wrzucić plik z przykładowymi formularzami
  • Poziom 2  
    Bałem się ze odpowiedź będzie zahaczała o VBA, tak formularze są w jednym arkuszu, ale mogę je podzielić tak żeby każdy był w oddzielnym z tym że wtedy musiałbym znaleść sposób na ukrycie konkretnego arkusza w powiązaniu z zawartościa komórki a to zapewne też już trzeba płodzić makro albo dwa?

    Plik załączam, liczba która determinuje ilość formularzy jest w arkuszu POŚW 22 wiersz, natomiast formularze tworzone są w arkuszu PRÓBA
  • Pomocny post
    Poziom 40  
    Niestety też nie widzę opcji by nie było makra.
    Ale nie makro ukrywające tylko zwykłe wprowadzenie informacji do wydruku do ilu stron ma drukować.
    Czyli pod przycisk "wrzucić"

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    I "drukować" przyciskiem.
  • Poziom 2  
    Ok, jest to jakieś rozwiązanie dziękuję, ale żeby osiągnąć pełnię szczęścia jeszcze zapytam - czy można tak zapisać makro aby nie tyle że drukował, ale żeby zmieniał obszar wydruku i powiązać z zawartościa komórki ?
    Coś na kształt jeżeli(czy.pusta(e22);"";obszar wydruku od 1 do e22).
  • Poziom 40  
    Jak już jest dopuszczona możliwość korzystania z makr to można wszystko.

    Poniżej kod ustawiający obszar wydruku (bez wydruku) na ilość stron wynikających z "E22"
    Kod nie jest w module tylko w kodzie arkusza POŚW w "sekcji" Change

    Działa tak, że każda zmiana wartości w E22 zmienia obszar wydruku (nie trzeba nic wciskać wystarczy zmienić wartość i wcisnąć enter lub wskazać myszką inną komórkę).
    Jednak nie da się zrobić tak by wartość "" dawała obszar wydruku "". To znaczy można to zrobić ale dla excela obszar wydruku równy "" to znaczy że nie ma obszaru wydruku a to znaczy: drukuj ile jest wszystkich stron w arkuszu.
    Więc trochę to zmieniłem

    Zasada działania:
    Jeżeli w E22 jest liczba mniejsza lub rowna 0 lub nie jest to cyfra obszar wydruku ustawi się na dwie komórki co da w efekcie wydrukowanie jednej czystej strony (z nagłówkiem). (przy jednej komórce jako obszar wydruku pojawia się komunikat żądający potwierdzenia - nie chciałem go wyłączać bo to dodatkowa linia kodu a właściwie dwie komórki jako obszar wydruku nic nie zmienia co do wydruku)
    Z kolei jeżeli w E22 jest dodatnia liczba wtedy jest to "przeliczane" na strony.


    Kod: vb
    Zaloguj się, aby zobaczyć kod


    I tu jest pewien "mankament".
    Wielkość strony (to co widać i co zostanie wydrukowane) jest w pewien sposób "uzależniona" od zainstalowanej drukarki
    innymi słowy na moim kompie (na razie bez ustawiania obszaru wydruku) wydrukowana strona może zawierać więcej kolumn lub wierszy.

    W moim przypadku strona kończy się na kolumnie W i wierszu 55
    W związku z tym w kodzie mam:
    $A$1:$W$" & CInt(Sheets("POŚW").Range("e22")) * 55

    Jeżeli u ciebie dla pierwszej strony jest inaczej trzeba to poprawić w kodzie.
  • Poziom 2  
    Ok dziekuję bardzo za pomoc i zainteresowanie tematem. Pozdrawiam.