Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  148 149 150 151 152 153 154 155 156   další » ... 298

No práve záleží na tom, čo ste neuviedol - čo s tým chcete robiť a čo dosiahnuť, ako sa to má používať. Ak poviete toto, bude sa dať premýšľať nad riešením.

Podľa mňa nechcete filtrovať tabuľku, ale chcete závislý výberový zoznam. Rozdiel je obrovský. To čo vy popisujete sa dá urobiť takto (príloha), a závislý výberový zoznam by musel fungovať na prerobenej tabuľke, kde by boli záznamy jednej úrovne pekne za sebou (stĺpec A) a potom by sa dala ľahko nájsť pozícia prvej bunky a počet rovnakých, ktoré by sa offsetovali na stĺp B, čo by bol zdroj pre závislý výberový zoznam. Takých riešení tu nájdete neúrekom. Výhodou by bola možnosť použiť ich viackrát (napr. fakturácia, vyskladňovanie a pod.). Lebo to čo opisujete je LEN na jednu bunku.

Ak rozumiem správne nieje potrebný maticový vzorec, ale stačí
=COUNTIF(C4:G15;C2)
Ak je 0 tak tam hodnota nieje, ak je >0 tak tam hodnota je. Skúšané na dátumoch.

OT: Ty vole, to je román presne ako som predpokladal ... ani som to nedočítal.

No, tých problémov tam je strašne veľa. Nemôže Vám to samé doplniť kraj, keď nemáte zoznam všetkým miest a obcí a im prislúchajúcich krajov pekne v tabuľke, a z nej sa to doplní. Dalo by sa to riešiť aj tak, že by sa vždy porovnala napísaná obec (bolo by dovolené nielen vybrať existujúcu ale aj zadať novú), a ak by sa našla, zakázalo by to zmenu kraju a doplnilo ho, no ak by nenašlo, povolilo by nastavenia kraja z možností, ktoré sú pevné. Technických problémov tam bude treba riešiť fakt veľa. Od kontroly číselných údajov v číselných údajoch, cez zabezpečenie neduplicitného vykonávania procedúr (jedna operácia ovplyvňuje druhú a opačne, napr. zaškrtávacie polia), ďalej napr. ošetrenie krajných indexov (1. a posledný), pričom za posledný sa dá ísť ale už to bude ako pridanie nového záznamu, atď. Treba zabezpečiť rozlíšenie nového záznamu a editáciu starého, možnosť skočiť na záznam s nejakým indexom (nielen po jednom), pri odstránení záznamu poprehadzovať poradové čísla ... Je toho veľa, pozeral som nato. Nečudujte sa, že sa nikto nepredháňa...

Nastavenie premennej nieje možné pri jej deklarácii. Použite na to Metódu zošitu Workbook_Open(). Ak chcete uchovať premennú aby bola nastavená pri otvorení tá ktorá bola pri poslednom zatvorení a uložení zošitu, tak si na to vytvorte jeden list s Visible=xlSheetVeryHidden, kde si budete ukladať zmysluplné hodnoty takýchto premenných. Zmysluplné píšem preto, že tam nemôžete uložiť premennú typu Object, napr. Worksheet, ale textový názov listu, teda jeho .Name.
Inak platí, že kdekoľvek v makre nastavíte Public premennej hodnotu, táto hodnota je dostupná v celom VBA aj v UserForm.

Tu máte zmenenú verziu, nielen od 12. riadku, ale aj predpokladám potrebu uchovania tých 11 riadkov nad tým, a zároveň upravený proces zoradenia.

A čo tam chcete vyčarovať s tými ostatnými makrami ?

Keď na to ešte tak pozerám, pridajte na koniec tohto riadku:
If Z = False Then Col.Add Array(Datum, i)
ešte ", CStr(i)", teda:
If Z = False Then Col.Add Array(Datum, i), CStr(i)

Možno aj takto, ale pozor, používa sa rovnako veľká oblasť vpravo, kde sa premiestnia zoradené oblasti, a pôvodné stĺpce (už bez oblastí) sa celé zmažú. Vyskúšajte.

Sub ZoradSkupiny()
Dim Col As Collection, Riadkov As Long, Skupin As Long, i As Long, c, Datum As Date, Dat(), Z As Boolean, OldRng As String

Set Col = New Collection
With ThisWorkbook.ActiveSheet
Riadkov = .Cells(Rows.Count, 2).End(xlUp).Row + 2
Skupin = Riadkov \ 9
If Riadkov / 9 <> Skupin Then MsgBox "Oblasti niesú rovnomerné! Koniec.": Exit Sub
ReDim Dat(1 To Riadkov, 1 To 1)
Dat = .Cells(1, 12).Resize(Riadkov).Value

For i = 1 To Skupin
Datum = Dat((i - 1) * 9 + 3, 1)
Z = False
If Col.Count > 0 Then
For Each c In Col
If c(0) > Datum Then Col.Add Array(Datum, i), Before:=CStr(c(1)): Z = True: Exit For
Next c
If Z = False Then Col.Add Array(Datum, i), CStr(i)
Else
Col.Add Array(Datum, i), CStr(i)
End If
Next i

With Application: .ScreenUpdating = False: .EnableEvents = False: .Calculation = xlCalculationManual: End With
OldRng = Selection.Address
.Cells(1, 1).Resize(, 13).Copy
.Cells(1, 14).Resize(, 13).PasteSpecial Paste:=xlPasteColumnWidths

Riadkov = 0
For Each c In Col
.Cells((c(1) - 1) * 9 + 1, 1).Resize(9, 13).Cut
.Cells(Riadkov * 9 + 1, 14).Resize(9, 13).Insert Shift:=xlDown
Riadkov = Riadkov + 1
Next c

.Columns(1).Resize(, 13).EntireColumn.Delete

With Application: .ScreenUpdating = True: .EnableEvents = True: .Calculation = xlCalculationAutomatic: End With
.Range(OldRng).Select
End With

Set Col = Nothing
End Sub

Tak?

Dnes v každej vete čo prečítam vidím nelogickosť.
"odoslalo na gmail bez outloku" ??? Každý mail predsa odosiela maily na akýkoľvek mail, nie len na gmail. Asi myslíte "odoslalo z gmailu bez outloku". A to je povedané niečo úplne iné. Na to sa používa metóda CDO, ale pri nej musia byť v makre uložené prihlasovacie údaje do mailu (hocikto ich môže vidieť, heslo tomu príliš nezabráni). Zadajte si tu na fóre hľadať výraz "CDO", je tu príkladov hafo. Marí sa mi tuším dokonca, že niekto spomínal, že cez vlastný poštový server heslo netreba. Neverím, že to tu za 20 min nenájdete.

Skutočne nejde použiť Worksheet_Change a chcete použiť Worksheet_Calculate ? Skúste z týchto 2 príkladov prísť na to aké to môže prinášať komplikácie (iba napoviem, že v Calculate sa nedozviete, čo spôsobilo prepočet, ani či vôbec došlo k zmene danej bunky ...).
A Vy máte dať prílohu + presný popis čo sa má diať, nie ja.

Toto bude fungovať aj pri prepočítaní vzorcov, nielen pri zmene nejakej bunky (pri nej tiež).

Do VBA listu:
Private Sub Worksheet_Calculate()
If Cells(1, 1).Value > 0.5 Then MojeMakro
End Sub


Do VBA listu alebo modulu:
Sub MojeMakro()
...
End Sub

A to je konštatovanie, či otázka ?
V oboch prípadoch - áno, funguje to na každý mail, ktorý je nastavený v Outlooku.

"Palooo" je užívateľ, ktorý pridal v prvom príspevku odkaz na riešenie, a v treťom príspevku odkaz na súbor s príkladom v prílohe. A potom nasleduje ďalší príklad od užívateľa "dream2003" formou zobrazeného textu. Všetky tieto menované príspevky obsahujú nejaký kód. Nenapísal ste, na ktorý príklad sa pýtate. Preto som písal, či chcete aby som pozrel aj na ten príklad od užívateľa "Palooo".


Strana:  1 ... « předchozí  148 149 150 151 152 153 154 155 156   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