Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  119 120 121 122 123 124 125 126 127   další » ... 302

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...

Keď skúsite Select Case nebude to prehľadnejšie?
Sub kurz()
Dim a, b, c As Double

a = ActiveCell
b = Range("C2")

Select Case True
Case IsEmpty(a): MsgBox "Vybraná buňka musí obsahovat data!", vbExclamation
Case Not IsNumeric(a): MsgBox "Vybraná buňka musí obsahovat číslici!", vbExclamation
Case IsEmpty(b): MsgBox "Zadejte kurz.", vbCritical, "POZOR!"
Case Else: c = a * b * 1000
MsgBox Format(a * 1000, "#,##0" & " €") & " = " & Format(c, "#,##0.00" & " Kč")
End Select
End Sub

martin-l : Volá sa to VBA (Visual Basic for Application) - v Office aplikáciách je užívateľsky zaužívané pomenovanie "makro". V makre nemôžete len tak "meniť údaje", ak neviete čo to spôsobí. Použitie makra nejde vrátiť naspäť - vtedy nefunguje Undo.

Merlin99 : Tie kritériá majú byť typu AND alebo OR? Teda zráta sa hodnota iba ak sú splnené všetky vertikálne kritériá v danom riadku (aj A aj 22), alebo stačí iba niektoré z nich (napr. iba A a 22 nie)? Lebo medzi vertikálnym a horizontálnym kritériom je AND, to je jasné.

Inak premýšľam to spraviť vzorcom s pomocou fnc MMULT namiesto makra. Mrknem na to asi až pozajtra. Zajtra som celý deň preč a teraz už idem prdieť do paplónu :)

EDIT 6:48: Ešte ma napadlo, ak je viac stĺpcov vertikálnych podmienok, tak či už v AND alebo OR, majú sa kontrolovať hľadané kritériá vo všetkých stĺpcoch ? Teda A sa kontroluje v danom riadku aj pre B6:B10 ale aj pre D6:D10? Alebo sa toto práve nesmie robiť?

Nemáte náhodou aj pôvodný súbor s použitím? Dnes sa mi už nechce vymýšľať data ...

"Mollecht" a "argddsver", na ktorý príspevok reagujete ?

Vaša príloha má 0 veľkosť. Toto ale asi nepôjde, lebo ak aj urobíte dynamický Definovaný názov a ten dáte do ListFillRange, tak ActiveX CB nedostane impulz pre reload položiek pri pridaní do zoznamu, len pri ich zmene alebo vymazaní/pridaní riadku. Čo je dosť zvláštne.

Prípadne makrom.

"přebírat" - teda opakovane? Ak áno a zároveň je podfarbenie menené manuálne, tak jedine makrom pri aktivácii List2.
Ak je to jednorázovo (ale to by malo asi byť "přebrat" a nie "přebírat"), alebo opakovane ale s podmieneným formátovaním, tak raz to skopírujte ako píše kabaka.

A nezabudnúť vo vlastnostiach buniek, ktorým má zostať možnosť zmeny, zrušiť Ochrana - Zamknúť bunky.


Strana:  1 ... « předchozí  119 120 121 122 123 124 125 126 127   další » ... 302

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