ID tematu: 70570
 |
jak określić dynamiczny obszar wydruku w języku VBA? PROBLEM |
Autor |
Wiadomość |
AnnKa
Świeżak

Wersja: Win Office 2019
Posty: 3
|
Wysłany: 03-04-2021, 08:38 jak określić dynamiczny obszar wydruku w języku VBA? PROBLEM
|
|
|
Witam
Próbuję stworzyć makro do drukowania, przy założeniu, że obszar wydruku jest dynamiczny.
Jest to formularz z danymi nagłówkowymi oraz tabelą z wieloma wierszami, przy czym nawet niewypełnione wiersze nie są tak do końca puste (zawierają lp, formuły oraz dane ogólnie opisujące komórki).
Stworzyłam formułę, która działa jednorazowo po wpisaniu ją w obszar wydruku:
Kod: | ='the order form'!$A$1:$AP$12;PRZESUNIĘCIE('the order form'!$A$13:$AP$62;0;0;LICZ.JEŻELI('the order form'!$AQ$13:$AS$62;"PRAWDA");42)
|
A1:AP12 -obszar wydruku, który jest stały
A13:AP62-obszar uzależniony od zawartości AS13:AS62 (kolumny AS)
Jeżeli wiersz ma być widoczny na wydruku, w kolumnie AS ukazuje się "prawda" (ustalone na podstawie innej funkcji), i te wiersze oprócz danych nagłówkowych z "prawdą powinny się drukować"
jednak po przerobieniu jej przez excel przybiera postać: przy wypełnionych dwóch wierszach:
A1:AP16
Wiem, że jedyne wyjście z sytuacji, to stworzenie polecenia w języku VBA, ale z tym niestety nie daję sobie rady...
Będę wdzięczna za wskazówki i pomoc.
pozdrawiam |
_________________ AnnKa |
|
|
 | ID posta:
403124
|
|
|
 |
|
|
|
Maciej Gonet
Excel Expert

Wersja: Win Office 2016
Pomógł: 2118 razy Posty: 6628
|
Wysłany: 03-04-2021, 10:06
|
|
|
Witaj na Forum!
Szkoda, że nie załączyłaś przykładowego pliku. Byłoby łatwiej dopasować wskazówki do Twojego przypadku.
Rzeczywiście obszar wydruku jest pamiętany statycznie jako adres zakresu.
Odpowiada za to w VBA polecenie:
Kod: | ActiveSheet.PageSetup.PrintArea = adres |
Jako adres można podać tekst adresu (w cudzysłowie), który może być wyliczony. Można go wyliczyć w VBA lub w arkuszu i przekazać tu odwołanie do komórki z tym adresem.
W związku z tym powinnaś odpowiedzieć na dwa pytania:
1) Czy chcesz wyliczać adres obszaru wydruku w arkuszu (żeby mieć nad nim wizualną kontrolę) i przekazywać ten adres do VBA, czy wolisz, żeby obliczanie adresu było w kodzie VBA?
2) W jaki sposób chcesz uaktualniać obszar wydruku? Skrótem klawiaturowym? Przyciskiem w arkuszu? Automatycznie procedurą zdarzeniową - wtedy trzeba dokładnie określić kiedy ma to nastąpić. Ta aktualizacja nie może być zbyt częsta, żeby nie spowalniać arkusza.
Przykład w załączniku.
Obszar_wydruku.xlsm
|
Pobierz Plik ściągnięto 6 raz(y) 16.16 KB |
|
|
 | ID posta:
403132
|
|
|
 |
|
|
Marecki
Excel Expert


Wersja: Win Office 2019
Pomógł: 2530 razy Posty: 8431
|
Wysłany: 03-04-2021, 10:39
|
|
|
AnnKa, pokaż załącznik, bo nie bardzo rozumiem.
Skoro obszar stały to A1:AP12
Teraz dokładając dwa kolejne wiersze to obszarem wydruku powinien być zakres A1:AP14, a nie A1:AP16.
Czy tak ?
Kod: | Sub Drukuj()
Dim PA As Range 'PrintArea
Dim Adres As String
With ActiveSheet
Set PA = .Range("A1:AP12")
Adres = PA.Resize(PA.Rows.Count + Application.CountIf([AS13:AS62], True)).Address
.PageSetup.PrintArea = Adres
.PrintOut
End With
Set PA = Nothing
End Sub |
|
_________________ Hardware - ta część komputera, którą można kopnąć kiedy software przestanie funkcjonować.
Szkolenia z Excela , FB
Office 2019 Professional Plus , Windows 10 x64
Pozdrawiam, były mkkk23 teraz Marecki. |
|
 | ID posta:
403133
|
|
|
 |
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Dodaj temat do Ulubionych Wersja do druku
|
 |
Strona używa plików cookies.
Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe
|