< návrat zpět

MS Excel


Téma: Tisk pomocí makra podle podmínky rss

Zaslal/a 1.8.2018 13:37

Dobrý den,
chtěla bych vás poprosit o radu k vba kodu pro tisk.
Mám jeden list, který obsahuje množství dat, které jsou rozděleny na stránky (celkem 6), první dvě stránky chci tisknout vždy, zbytek stránek chci tisknout pouze tehdy zda buňka ve sloupci B na začátku listu obsahuje číslo vybrané přílohy (1 až 4). Toto číslo je zadáváno automaticky v případě, že se z rozevíracího seznamu na konci druhé stránky vybere daný název listu.

Já vba kod mám, ten mi ale bohužel zobrazí v pdf i ty stránky, které nemají přiřazené číslo. Např. Jako přílohu 1 vyberu stránku č. 3 a jako přílohu 2 vyberu stránku č. 5. První dvě stránky se vytisknou vždy, poté se mi vytisknou stránky 3 až 5, i přesto, že stránka č. 4 nemá přidělené číslo přílohy. Stránka č. se již nevytiskne, ta také nemá přidělené číslo. Tudíž nevím kde je problém. Děkuji za každou radu.

Kod:
Sub Tisk()

If Range("B96").Text = "1" Then
Range("A96:I143").Select
End If

If Range("B144").Text = "2" Then
Range("A144:I187").Select
End If
If Range("B144").Text = "3" Then
Range("A144:I187").Select
End If
If Range("B144").Text = "4" Then
Range("A144:I187").Select
End If

If Range("B191").Text = "2" Then
Range("A191:I232").Select
End If
If Range("B191").Text = "3" Then
Range("A191:I232").Select
End If
If Range("B191").Text = "4" Then
Range("A191:I234").Select
End If

If Range("B238").Text = "2" Then
Range("A238:I282").Select
End If
If Range("B238").Text = "3" Then
Range("A238:I282").Select
End If
If Range("B238").Text = "4" Then
Range("A238:I283").Select
End If

ActiveSheet.PageSetup.PrintArea = Range("$A$1:$I$95", Selection).Address
ActiveSheet.PrintOut Preview:=True

End Sub

(Poznámka: Kod je zbytečně dlouhý, já vím, šlo by to udělat i jinak, nebo že oblast >0. Ale problém je stejný.)

Zaslat odpověď >

Strana:  1 2 3   další »
#041005
elninoslov
Toto je bez prílohy veľmi zle. Skrátená verzia, čistý tip, lebo z popisu ani kódu mi nieje jasné čo chcete, čo je kde umiestnené, čo sa má na základe čoho a odkiaľ brať do úvahy.
Sub Tisk()
Dim sOblast As String
With ThisWorkbook.ActiveSheet
sOblast = Replace(WorksheetFunction.Trim("$A$1:$I$95 " & _
IIf(.Range("B96").Value > 0, "A96:I143 ", "") & _
IIf(.Range("B144").Value > 0, "A144:I187 ", "") & _
IIf(.Range("B191").Value > 0, "A191:I232 ", "") & _
IIf(.Range("B238").Value > 0, "A238:I282 ", "")), " ", ",")
.PageSetup.PrintArea = sOblast
.PrintOut Preview:=True
End With
End Sub

Vložte celú prílohu, kde bude vidieť dáta, vymyslené, ale reálno vyzerajúce, v rovnakom množstve, rovnakého formátu, rovnako umiestnené ako používate. A pridajte nejaký iný popis a konkrétny príklad, čo sa má stať ak tuto bude toto a hentam tamto, tak potom sa to tuto poondie a totohľa potentuje, a totok je výsledok :)citovat
#041006
avatar
Mám zato,že
Range("$A$1:$I$95", Selection)
vrací souvislou oblast tj. od $A$1 po poslední vybranou buňkucitovat
#041007
avatar
Eninoslo: Blbé je, že nemůžu vložit zdrojový soubor, z pracovních důvodů. Jde o to, že mám 4 přílohy, které v různém pořadí vybírám v jednom sloupci ze seznamu. K nim se přiřadí číslo přílohy dle toho, v jakém pořádí je přiložíte, a chci vytisknout do pdf pouze ty přílohy, které mají číslo, ty které nejsou vybrány a nemají číslo, nechci tisknout, spolu s prvníma dvěma stranama, ty chci tisknout vždy.

JoKe: Myslím, si, že je problém v posledních třech řádcích, protože c první částí at udělám co udělám, stále to nedělá to co chci. Takže problém podle mě bude s tím Slection. Těžko ale říct.citovat
#041008
elninoslov
Dobre teda, ako myslíte. Ale nemôžete čakať, že budeme hádať a dotazovať sa vylučovacou metódou na to čo chcete, kde čo a prečo máte, a či je to vhodné riešenie toho čo chcete. Koľko by Vám asi trvalo z Vašeho firemného súboru urobiť súbor rovnako vyzerajúci, ale s vymyslenými hodnotami "123456" a "bla bla bla" ? A potom si skúste tipnúť, koľko času asi nám bude trvať, kým si správne tipneme tie isté veci.

Napíšte presne adresy všetkých buniek, v ktorých sa nachádzajú informácie o číslach príloh. Určite sú to bunky B96, B144, B191, B238 ?

Oblasti príloh sú A96:I143, A144:I187, A191:I232 (pri voľbe 4 má byť iná ? A191:I234), A238:I282 (pri voľbe 4 má byť iná ? A238:I283) ?

Požadujete poprehadzované poradie ? Teda napr. najskôr A96:I143, potom A238:I283, a až potom napr. A144:I187 ?

Počet strán na každú z príloh je rovnaký ? Teda napr. čo príloha to 1 strana ? Máte tam zlomy strán ?

Vždy sa jedná o presne rovnaké rozloženie tej prvej časti aj príloh ? Teda nemení sa počet riadkov (to asi nie) a ani výška riadkov ?

Medzi niektorými prílohami sú medzery ?

...citovat
#041009
avatar

elninoslov napsal/a:

Dobre teda, ako myslíte. Ale nemôžete čakať, že budeme hádať a dotazovať sa vylučovacou metódou na to čo chcete, kde čo a prečo máte, a či je to vhodné riešenie toho čo chcete...


Nemáte pud sebezáchovy, stejně to nakonec uděláte...citovat
#041010
avatar
Ono to není uplně tak jednoduché... ale váš názor, děkuji za něj. Ale stejně se přikláním k tomu, že je tam problém s tím Select a Selection, protože at dělám co dělám, vždy dle mého narazím na ten výběr, že to prostě vybírá vždy i ty přílohy, které obsahují 0, tedy nenesou hodnotu 1 až 4. Ve výsledku je mi jedno jakou tam dám podmínku, jen mi jde o to, zda podmínka a následný tisk do pdf je správně.

add O1:Ano určitě jde o tyto 4 buňky, tam jsou uvedeny čísla dané přílohy, v případě tisku mají 1 až 4, v případě že se tisknout nebudou je tam 0.

add O2: Ano.

add O3: Ano, bylo by to fajn i s přehazovaným pořadí, pokud to ale nepůjde, a je tam nutnost přesného řazení, vyřeším si to, např. zaškrtávacím polem a posléze přiřazením čísla. To už mám eventuálně vyřešené.

Stále jde o to, že jde mi jen o tisk příloh, které mají v buňce číslo od 1 do 4, v případě 0 nechci tisknout, tedy ze čtyř listů pouze ten, který má označení čísla přílohy.

add O4: Ano, všechny přílohy jsou na 1 stránku.

add O5: počet textu se liší, velikosti řádku a sloupců ne, vždy jde o přílohu, která je na 1 stránku o různém obsahu.

add O6: Ne nejsou mezi nimi mezery.

Kdyby na to někdo přišel, byla bych ráda, ale nejde mi vyloženě o obsah kodu, ale nějaké vodítko, kterého bych se mohla chytnout.

elninoslov napsal/a:

Dobre teda, ako myslíte. Ale nemôžete čakať, že budeme hádať a dotazovať sa vylučovacou metódou na to čo chcete, kde čo a prečo máte, a či je to vhodné riešenie toho čo chcete. Koľko by Vám asi trvalo z Vašeho firemného súboru urobiť súbor rovnako vyzerajúci, ale s vymyslenými hodnotami "123456" a "bla bla bla" ? A potom si skúste tipnúť, koľko času asi nám bude trvať, kým si správne tipneme tie isté veci.

Napíšte presne adresy všetkých buniek, v ktorých sa nachádzajú informácie o číslach príloh. Určite sú to bunky B96, B144, B191, B238 ?

Oblasti príloh sú A96:I143, A144:I187, A191:I232 (pri voľbe 4 má byť iná ? A191:I234), A238:I282 (pri voľbe 4 má byť iná ? A238:I283) ?

Požadujete poprehadzované poradie ? Teda napr. najskôr A96:I143, potom A238:I283, a až potom napr. A144:I187 ?

Počet strán na každú z príloh je rovnaký ? Teda napr. čo príloha to 1 strana ? Máte tam zlomy strán ?

Vždy sa jedná o presne rovnaké rozloženie tej prvej časti aj príloh ? Teda nemení sa počet riadkov (to asi nie) a ani výška riadkov ?

Medzi niektorými prílohami sú medzery ?

...
citovat
#041014
avatar
Určitě je problém v SELECT
např. v části
If Range("B144").Text = "4" Then
Range("A144:I187").Select
End If

If Range("B191").Text = "2" Then
Range("A191:I232").Select
End If

jsou-li splněny obě, je vybrána pouze druhá oblast "A191:I232"
Jde o pojení nesouvislých oblastí.citovat
#041017
avatar

Venali napsal/a:

protože at dělám co dělám,

Doporučujem pokračovať v tom "dělání". Bez prílohy to tu ťažko za teba niekto urobí.

Možno toto makro ti naznačí, čo robíš nesprávne.
Sub Makro1()
Range("A8:A14").Select
Range("A18:A24").Select
Range("A1:A5", Selection).Select
End Sub

A taktiež si pozri aj tento príkaz, možno ti to zapne.
Union(Range("A1:A5"), Range("A18:A24")).Selectcitovat
#041018
avatar
Problém bude medzi stoličkou a klávesnicou.

Ak v B191 bude "4" a v B238 bude "0", tak sa vytlačí A1 až A234

Ak v B238 bude "4" tak sa vytlačí všetko bez ohľadu na to či bude v ostatných bunkách "0"citovat
#041019
avatar
marjankaj: Děkuji, ikdyž vše spojím do jedné, tak je problém stejný.

If Range("B96").Value > 0 Then
Range("A96:I143").Select
End If

If Range("B144").Value > 0 Then
Range("A144:I187").Select
End If

Bohužel nemám s VBA moc zkušeností, proto to zkouším tady.

Ale je hezké, že když člověk poprosí o pomoc, dostane se mu jen urážky.citovat

Strana:  1 2 3   další »

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje