Nakoniec ma niečo ešte napadlo (nový kód v pôvodnom príspevku). Ak sú Ano/Ne počítané vzorcom, pôvodné makro by ho nahradilo hodnotou, toto nové nie.
Upravené v predošlom príspevku.
OT: Všimol som si vo vedľajšom vlákne ...
Text na stĺpce - Oddelené - Ďalej - Iné "_" - Ďalej - Označím prvý stĺpec (očernie) a vyberiem Text - Dokončiť
Problém nastane tam, kde nemáte oddeľovač "_" (riadok 18. a 19.)
EDIT: a to som si reloadol, či niekto neodpovedá
Asi tak ?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim AnoNe(), Citac(), Riadkov As Long, i As Long
If Target.Address = "$B$1" Then
If Target.Value2 = 1 Then
Riadkov = Cells(Rows.Count, 3).End(xlUp).Row
AnoNe = Cells(1, 3).Resize(Riadkov).Value2
Citac = Cells(1, 4).Resize(Riadkov).Value2
For i = 1 To Riadkov
If UCase(AnoNe(i, 1)) = "ANO" Then
If IsNumeric(Citac(i, 1)) Then Citac(i, 1) = Citac(i, 1) + 1
End If
Next i
Application.EnableEvents = False
Cells(1, 4).Resize(Riadkov).Value2 = Citac
Target.ClearContents
Application.EnableEvents = True
End If
End If
End Sub
Napísal som Vám, že ak má slúžiť to vkladanie filtrovaného mena do nejakej bunky len preto, aby sa tým vyvolala Worksheet_Change, v ktorej potom ten filter nastavíte, tak to robiť nemusíte, ale priamo tam nastavte ten filter. Ak to tak nechcete, budiš, potom ale musíte zmeniť testovanú adresu bunky z $Q$8 na $P$8, lebo to $Q$8 je menené vzorcom, a ten Worksheet_Change nevyvolá. Teda napr.:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$P$8" Then
If IsEmpty(Target) Then
Sheets("Výpožičky").AutoFilter.ShowAllData
Else
Sheets("Výpožičky").Columns("F:F").AutoFilter Field:=6, Criteria1:=Target.Offset(, 1)
End If
End If
End Sub
Dnes sa mi Váš kód už študovať nechce, ak to nieje ono, skúste popísať ako chcete aby to fungovalo...
Myslíte obyčajné tlačítko na liste ?
Sub Doplnit()
ActiveCell.Value = "Nejaký text"
End Sub
Bez problémov :
Sub Michal()
Hárok7.Range("A1").Value = "Michal"
End Sub
Sub Lýdia()
Hárok7.Range("A1").Value = "Lýdia"
End Sub
Sub Anna()
Hárok7.Range("A1").Value = "Anna"
End Sub
Ale keď má byť skrytý, a zároveň do neho chcete vpisovať filtrované meno, aby sa vyvolala akcia, tak to nemusí ten list vôbec existovať a použite takéto niečo :
Sub Michal()
Call Filtruj("Michal")
End Sub
Sub Lýdia()
Call Filtruj("Lýdia")
End Sub
Sub Anna()
Call Filtruj("Anna")
End Sub
Sub Vsetko()
Call Filtruj("")
End Sub
Sub Filtruj(S As String)
If S = "" Then
Sheets("Výpožičky").ShowAllData
Else
Sheets("Výpožičky").Columns("F:F").AutoFilter Field:=6, Criteria1:=S
End If
End Sub
Pavlus, on nepotrebuje ale zistiť v KT jedinečné záznamy (alebo počet jedinečných záznamov) z jedného stĺpca ničím nepodmienené. Ale podmienkou jedinečnosti je jeden jedinečný záznam z prvého stĺpca a v ďalšom stĺpci sa zisťuje počet jedinečných záznamov druhého stĺpca podmienených prvých stĺpcom. A to je niečo iné ako linky čo hneď hodí G na Lasákovic klučinu a pod.
Ten DataModel vyzerá sľubne, testol som to, len snáď si to do budúcna aj zapamätám.
Jeden pomocný stĺp byť nemôže ?
Neviem či rozumiem popisu problému, ale zmenil som všetky vzorce, a nemal by byť problém s kladným ani záporným výpočtom rozdielu ani priemeru, ani s výpisom " dní,". Uviedol som 2 verzie, jedna maticová - nepotrebuje pomocný stĺpec, a jedna nematicová - potrebuje pomocný stĺpec. Vzorce vyzerajú zložito, ale to len kvôli tomu, že sa v nich počíta všetko X krát, kvôli znamienku "-", kvôli textu " dní, ", kvôli zvyšku ... Ale nebojte sa výpočet pár takých matíc si 10 ročné PC ani nevšimne :)
Ak som netrafil čo chcete, nepopisujte problém textom, ale zvýraznite bunky v príklade s popisom v prílohe.
To je jednoduché, máte tam 10000 riadkov, ktoré boli nejako použité, a následne iba vymazané. Keď ich vymažete iba pomocou Delete, tak ostanú označené ako "použitá oblasť". Treba celé riadky označiť za ušká vľavo, pklik na ušká a vybrať Odstrániť, potom uložiť súbor, a sú preč a nebudú považované za "použité". Lebo inak Vám to aj zväčšuje veľkosť súboru, aj zneprehľadňuje scrolovanie.
Každopádne makro som Vám prerobil tak, že mu je šumák, či je alebo nieje použitých 10000 prázdnych riadkov. Má to ale isté obmedzenia:
-medzera pre prvou tabuľkou musí byť menšia ako výška tabuľky
-medzi tabuľkami a pod tabuľkami nesmú byť žiadne dáta
-tabuľky a medzery medzi nimi musia byť rovnaké (používajú sa totiž násobky)
Dá sa to urobiť aj inak, napr sa spočíta koľko krát sa v stĺpci B vyskytuje text "CELKEM :", a podľa jeho pozície sa určí pozícia tabuľky. Spôsobov je viac.
No ale v tomto prípade reaguje makro zmazaním filtra nielen v prípade zmazania bunky A1, ale hociktorej. Malo by teda radšej prísť k nejakej podobnej úprave:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then If IsEmpty(Target) Then Sheets("Výpožičky").AutoFilter.ShowAllData Else Sheets("Výpožičky").Columns("F:F").AutoFilter Field:=6, Criteria1:=Target
End Sub
To je minimalistická jednoriadková, alebo nejako takto:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
If IsEmpty(Target) Then
Sheets("Výpožičky").AutoFilter.ShowAllData
Else
Sheets("Výpožičky").Columns("F:F").AutoFilter Field:=6, Criteria1:=Target
End If
End If
End Sub
To je rozložené a zrozumiteľnejšie.
Aktivácia bunky - znamená na ňu kliknúť ľavým myšítkom, ak ešte na nej nieste. V 2016 máte a karte Domov skupinu Schránka, a tam šípka, keď na ňu kliknete tak vyberiete Prilepiť špeciálne.
Alebo keď už máte tú násobiacu bunku skopírovanú a želanú oblasť so zápornými číslami označenú, tak na tú označenú oblasť kliknite pravým myšítkom a vyberte - Prilepiť špeciálne.
V oboch prípadoch potom vyberte Násobenie a OK.
Ten môj súbor je stiahnutý 0x. Takže to neskúšate na tom overenom súbore. Vyskúšajte najskôr to. Ja som tam robil ten dotaz nanovo. Kód si môžete spustiť aj manuálne, odkrokujte si ho cez F8. Pri Office 2003 sa nesmie dostať na riadok
Set CON = .Connections("zdrojová data").OLEDBConnection
a pri vyššom Office sa naopak nesmie dostať na riadok
Set CON = .Worksheets("List1").QueryTables("zdrojová data")
Sú súbory na sieti?
Obsahuje ten Váš zdrojový súbor určite rovnakú pomenovanú oblasť?
Rovnakú chybu robí na oboch druhoch Office?
Musíte sa rozpísať viac, ako na jednoslovné odpovede.
Neviem, ako inak pomôcť, keď mne to tu funguje.
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
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.