Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  115 116 117 118 119 120 121 122 123   další » ... 298

Barth, eLCHa: Tak som si to vyskúšal, a nejako mi to hlava neberie, ako je to myslené. Skúste prosím doplniť do môjho pokusného súboru, kam by sa malo to Cancel = True vsunúť, prípadne, ako to upraviť. Makro samozrejme nečaká na nabehnutie driveru tlačiarne (skúšam na Bullzip PDF). Vymaže farby, spustí tlač, a skôr ako nabehne tlač, je všetko obnovené a makro ukončené. Rovnako pri Ctrl+P aj PrintOut.
Ď.

PS: Makro je iba rozpracované, Opakujú sa v ňom podobné časti, a ak to bude takto použiteľné prerobím na param. procedúry.

Akože sa majú ignorovať iba posledné nuly, či čo ??? V tom prípade spĺňa podmienku iba jediné. Na jednom liste čísla, na druhom text, určite je to správne?

Tým "černobílý tisk" myslíte snáď šedú škálu, lebo už som dosť veľa rokov nevidel ČB tlačku :)
Ale to je nepodstatné. Platí to čo som písal. Treba vedieť odchytiť koniec tlače, aby ste mohli vrátiť farby späť. Inak to nepôjde. Počkajte na iný názor a potvrdenie/vyvrátenie.

Podľa mňa nepotrebujete 4 stĺpce v ListBoxe ale stačia 3, a tretí nebude zobrazený. To zoradenie B chcete makrom alebo si to zoradíte v zozname v liste a až potom načítate do ListBoxu?
Každopádne napr takto:
wsListocek.Cells(LbTovar.List(LbTovar.ListIndex, 1) + 1, 2).Activate
EDIT: Prípadne ukážka:

Takže Vy chcete tlačiť v šedej škále písmo, orámovania, šípky a objekty, ale nie vyfarbené oblasti ? Tak to nepôjde.
Jedine makrom pred začiatkom tlače nastaviť výplne na prázdne, a po skončení tlače naspäť. Snáď ma niekto opraví, odchytiť počiatok tlače sa dá v procedúre Workbook_BeforePrint, ale koniec tlače len tak neodchytíte. Taká požiadavka sa tu už riešila, ale nepamätám si, že by sa našlo schodné riešenie.
Mám na toto už dávno jeden nápad (v triede spracovávať prekresľovanie prvkov ribbonu alebo API FindWindow), ale to vyžaduje dlhé skúmanie, a to sa mi v tomto období teda nechce ...

Dajte v nastavení tlačiarne šedú škálu, nie čiernobielu. Nastavenie listu nechajte na default.

Dajte tento vzorec do B5, tú B5 dajte kopírovať, označte B5:AH32, pravý klik, Možnosti prilepenia - Vzorce.
=IF($A5="";"";VLOOKUP($A5;data!$B$2:$AJ$26;COLUMN(C5)))
=KDYŽ($A5="";"";SVYHLEDAT($A5;data!$B$2:$AJ$26;SLOUPEC(C5)))

Ale. Veď tie údaje v "Prosinec" sú potom kópia údajov v "data". Veď ich teda rovno vložte ako hodnoty do Prosinec. Alebo len nerozumiem potrebe mať presne rovnaké údaje v 2 listoch.
Ďalšia vec je, či Vy v Prosinec máte zoznam jedinečných ID (osobných čísel), alebo aj ten potrebujete tvoriť. A s tým suvisí aj to, či sa môže v "data" vyskytovať viackrát riadok s rovnakým ID - potom na hodnoty použiť SUMIF.

Zatiaľ nieje potrebné použiť makro.

Tak od boku skúste toto. Keď vravíte rozsiahla tabuľka, tak sa obávam o rýchlosť. No skúste.

Ešte to skrátime:
Private Sub cbVyrobce_Change()
Dim ADR As String

On Error Resume Next
ADR = "=vstupni_data!" & wsData.Range("MODEL").Address
cbModel.ListFillRange = ADR
Range("E6").ClearContents
End Sub

Definovaný názov MODEL obsahuje odkaz na správnu oblasť modelov podľa vybraného výrobcu. Je to zabezpečené pomocou OFFSET/POSUN a MATCH/POZVYHLEDAT.
Pri zmene výrobcu, alebo jeho vynulovaní, dôjde k tomu že sa do premennej ADR pokúsi priradiť adresu správnej oblasti MODEL. Ak nastane chyba (výrobca je prázdny, alebo bez modelu,...) ADR bude "". Teda sa zoznam v cbModel vlastne vynuluje. Ak ale bude výrobca validný, tak sa do cbModel načíta správna oblasť. Prípadná predchádzajúca hodnota v cbModel sa vymaže pomocou ClearContents na jej prepojenej bunke.

Tak ono by sa to dalo skrátiť aj takto:
Private Sub cbVyrobce_Change()
Dim ADR As String

On Error Resume Next
If WorksheetFunction.CountIf(wsData.Range("MODEL"), Range("E6").Value) = 0 Then ADR = "=vstupni_data!" & wsData.Range("MODEL").Address
cbModel.ListFillRange = ADR
Range("E6").ClearContents
End Sub

Môžete to urobiť aj takto nejako. Len tak v rýchlosti, testoval som to minimálne.

Makrom to je zložité, viď príklad. Nedokážete si to pravdepodobne upraviť. Prečo musia byť tie stĺpce inak? Na základe čoho manuálne prefarbujete bunky v List1? Ak máte nejaké pevne dané podmienky, napr. objednávateľ s najvyššou prioritou, či najstarší dátum a pod, tak to predsa riešte Podmieneným formátom.
Alebo ak nastavujete farebne nejaký stav objednávky (výroba, expedícia, doprava, montáž,...), tak si urobte vedľa každého stĺpca ešte jeden úzky stavový, kde bude výberový zoznam v bunke (napr. písmená V,E,D,M,...) a opäť pomocou Podmieneného formátovania nastavíte farby stavu objednávky. A navyše môžete mať aj prehodené stĺpce, lebo vzorcom dokážete dohľadať index stavového písmena v zdrojovom List1.

Pridal som ako 2. príklad listy Zdroj a Cieľ.

Tu máte teda aj to makro. Je trochu robustnejšie. Snáď som sa v tom moc nezamotal. Takže aj maticový vzorec aj makro môžu mať rôzny počet horizontálnych aj vertikálnych kritérií, len je treba dodržať rozmery oblastí. Veď ono je to aj farebne aj logicky jasné, že pre prípad AND, to nemôže byť inak. Prípad OR by sa robil inak.

Treba to ale otestovať...

No ja by som aj tak asi použil ten vzorec.

Kľudne sa dá nahradiť toto
Case IsEmpty(a): MsgBox "Vybraná buňka musí obsahovat data!", vbExclamation
Case Not IsNumeric(a): MsgBox "Vybraná buňka musí obsahovat číslici!", vbExclamation

za toto
Case IsEmpty(a) Or Not IsNumeric(a): MsgBox "Vybraná buňka musí obsahovat číslici!", vbExclamation
pretože oba prípady, aj keď v bunke nič nieje, aj keď obsahuje nečíslo, môžu kľudne vypísať rovnakú hlášku.

Ale absolútne v pohode to môže byť pomocou If Then, prípadne ElseIf. Ide o to aby ste sa v tom v prvom rade vyznal Vy a vedel si to prípadne ošéfovať.

Tu máte rýchlo ten vzorec na AND, na OR sa to dá odvodiť, no a makro, tak to netuším kedy stihnem...


Strana:  1 ... « předchozí  115 116 117 118 119 120 121 122 123   další » ... 298

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