< 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:  « předchozí  1 2 3   další »
#041020
avatar
Range("A96:I143").Select
ActiveSheet.PageSetup.PrintArea = Range("$A$1:$I$95," Selection.Address).Address
ActiveSheet.PrintOut Preview:=True
End If

If Range("B144").Value > 0 Then
Range("A144:I187").Select
ActiveSheet.PageSetup.PrintArea = Range("$A$1:$I$95," Selection.Address).Address
ActiveSheet.PrintOut Preview:=True
End If


No keby si to zadala takto tak by to bolo o inom. Ale ťažko radiť, keď nevieme ako má presne vyzerať výstup.
Toto nie je o skúsenostiach s VBA, ale o logiku. Platí to pre všetky jazyky, nielen pre VBA.

Predpokladám, že ten kód od elninoslov si ani nevyskúšala.citovat
#041021
avatar
Upravená verze, snad bude stačitcitovat
icon #041024
eLCHa
Já poprosím všechny zúčastněné, aby kód vkládali do tagu code - to je to tlačítko $ (dolar)
Kdo to má číst.

Děkuji

@Venali
žádnou urážku jsem nenašel - pokud tam je, specifikujtecitovat
#041025
avatar

Anonym napsal/a:

Upravená verze, snad bude stačit

Toto vyzerá fajn. 2citovat
#041026
avatar

eLCHa napsal/a:

Já poprosím všechny zúčastněné, aby kód vkládali do tagu code - to je to tlačítko $ (dolar)
Kdo to má číst.
Děkuji
@Venali
žádnou urážku jsem nenašel - pokud tam je, specifikujte

Už som to napravil.
Tá "urážka" asi bola na mňa. Ale je to chyba zadávateľky, ak nechápe ako funguje SELECT. Zapíše ich niekoľko za sebou a potom sa diví, že to funguje inak, ako si predstavovala.citovat
#041027
avatar

marjankaj napsal/a:


Predpokladám, že ten kód od elninoslov si ani nevyskúšala.


Ano, vyzkoušela, nevím proč bych jej neměla vyzkoušet... Bohužel nefungoval, excel mi to neakceptoval.

Nelze mi sem nahrát excel ve formátu xlsm, abyste měli představu. Asi dělám něco špatně.

Ještě jednou, ale ono to je asi k ničemu, když to nevidíte. Excel má 1 list o 6 strankách s libovolným textem, kde na druhé stránce je seznam příloh, které lze vybrat, pojmenujme je např. A, B, C, D. Když uživatel vybere např, přílohu A a D, chce aby se vytiskla stránka č. 1,2,3 a 6. Jde tedy o to, aby se stránka 1 a 2 tiskla vždy, a pak dle toho kterou stránku=přílohu vybere. Přílohy jsou tedy na každé stránce ve sloupci B specifikovány =IFERROR(POZVYHLEDAT(List2!A4;$B$89:$B$93;0);"")
Když uživatel vybere danou přílohu přiřadí se mu číslo, na základě kterého chci aby se tiskla pouze čísla od 1 do 4, tudíž když se ve sloupci B96, B144, B191 a B238 ukáže 0, nechci aby se tiskla tato stránka.

eLCHa: záleží na úhlu pohledu, mě jistý příspěvek přišel jako urážka ...citovat
#041028
avatar
@venali
Ale ZIP snáď funguje. Zbaľ to do ZIPu.

A keď to elninoslov nemal možnosť, kde by ten kód overil, tak to je ťažké. Možno to písal z mobilu.citovat
icon #041029
eLCHa
@Venali

Soubory typu .xlsm zde nelze vložit - zabalte nejlépe do .zip

Ještě jednou - pokud vás něco uráží, specifikujte - já našel jen to s klávesnicí a židlí a to vás přece urazit nemůže (běžně používaná hláška sloužící k nakopnutí - nikoli fyzickému - uživatele ;) ).citovat
#041030
avatar

marjankaj napsal/a:

@venali
Ale ZIP snáď funguje. Zbaľ to do ZIPu.

A keď to elninoslov nemal možnosť, kde by ten kód overil, tak to je ťažké. Možno to písal z mobilu.


Tak tady to je.
Příloha: zip41030_sesit2.zip (281kB, staženo 29x)
citovat
#041034
Stalker
Nečet sem celou diskuzi, tudíž toto řešení není přímo podle zadání tazatelky. Přiložený soubor je pouze ukázkou možného řešení.

http://leteckaposta.cz/183033585citovat

Strana:  « předchozí  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