A EVALUATE si s tým tiež neporadí ?
Dim RNG As Range
With Worksheets("ListM")
Set RNG = .Range(Range("H2"), Range("H2").End(xlDown))
RNG.Value = Evaluate("=1*" & RNG.Address)
End With
Set RNG = Nothing
EDIT: Nie, neporadí, nevracia totiž pole, ani správnu interpretáciu.
Nechce sa mi čítať celé vlákno (ani toto, ani minulé), tak len okrajovo.
Vzorcami to riešiť (tak ako ste niekde spomenul/a) by mohlo byť možné napr. tak ako je navrhnuté v "Filter vzorcom.xlsx". Píšete do políčka a hneď počas písania sa filtruje Tabuľka. Tento vyfiltrovaný zoznam by sa dal potom použiť v Overení dát ako dostupný zoznam na vyplnenie formulára, či na čo to vôbec potrebujete. Nevýhoda je, že to nefunguje dostatočne rýchlo nad 1000 riadkov a berie do úvahy diakritiku. Veľkosť písma či čiastková zhoda nieje problém.
Výhodnejšie je makro. Makro to na vzorke požičanej od vovka.h (3500 riadkov) zvláda ľavou zadnou takmer okamžite aj s ignoráciou diakritiky, veľkosti písma, a samozrejme s čiastkovými zhodami v 4 stĺpcoch (ID, meno, OP, RČ). Pravý klik na riadok, kam vložiť údaje zo zdrojovej Tabuľky, vyfiltrovať písaním do TextBoxu, a klikom sa to vloží na želaný riadok. Súbor "Filter makrom.xlsm".
Použil som odstraňovanie diakritiky od eLCHa.
Zamýšľaný príspevok pošlite na účet fóra.
Heh, ale veď Vy musíte upresniť, čo potrebujete.
Chcete aby ste mali jedno políčko, do ktorého napíšete nejaký reťazec, a prehľadajú sa Vám všetky stĺpce, či sa tam nevyskytuje daný reťazec, a ak áno, tak sa všetky nájdené záznamy zobrazia ?
Chcete SVYHLEDAT? Tým chcete nájsť napr. jedno konkrétne číslo ID, a k nemu chcete vypísať ostatné údaje?
Ak chcete prehľadávať iný ako prvý stĺpec, nemôžete použiť SVYHLEDAT, ale INDEX+POZVYHLEDAT. Tieto možnosti sú ale primárne určené na nájdenie celej položky, a nie časti, ako popisujete.
Celkovo, otázok je veľa, mne sa nechce vypisovať Vám všetky možnosti, ale Vy napíšte čo potrebujete, ale aj popis ako to budete používať. Pretože napr. zamieňate slovo vyhľadať a filtrovať, tak je potrebné rapídne zlepšenie popisu.
Zlý popis, skoro žiadny príklad, nevhodný design. A k tomu mi nejde (alebo neviem) použiť v rozšírenom filtry filtrovanie čísla, ktoré obsahuje nejaké číslo. Ani keď je to "číslo" ako text. Každopádne v List 2 uchovávajte dáta (neviem, prečo musia byť medzi nimi prázdne stĺpce). Filtrované dáta sa Vám budú zobrazovať v List1, s tým, že v prvom stĺpci ID sa berie do úvahy iba kompletná zhoda, kdežto v druhým 2 stĺpcoch už akýkoľvek výskyt. Množstvo riadkov si to nájde samé.
Nedávno som robil iný druh filtru, kde prebehlo všetko v poliach a v stĺpcovom ListBoxe vo formulári, a fungovalo to ako chcete a rýchlo. Skúste toto, či bude vyhovovať, lebo na úpravu spomínaného riešenia do zverejniteľnej podoby nemám ani čas ani chuť, aj keď je to krpaté.
Ostatné makrá som Vám neskúmal, ale všimol som si že máte rovnaké makrá aj v module aj v List1.
Snáď Vám prípadne niekto poradí s filtrovaním časti čísla ID.
Slovom "označiť" myslíte ľavý klik myši ? Alebo slovom "označiť" myslíte vyfarbiť a pod. To je zásadný rozdiel v skladbe makra. To sa sa prehľadávaná oblasť mení, je najmenší problém, to sa dá vyriešiť jednoducho Definovaným názvom. Ale od významu slova "označiť" záleží či sa použije funkcia, alebo makro naviazané na udalosť listu (klik).
Netuším, či chápem správne. Tento kód do listu "Hárok1"
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 4 Then
Dim R As Long
On Error Resume Next
R = WorksheetFunction.Match(ActiveCell, Worksheets("Hárok2").Range("D1:D10"), 0)
If Err = 0 Then Cells(2, 6) = R Else Cells(2, 6) = CVErr(xlErrNA)
End If
End Sub
V liste "Hárok2" sú v D1:D10 hodnoty, ktoré prehľadáva. Táto adresa sa dá zmeniť v makre alebo zameniť za definovaný názov. podľa toho ako ju chcete meniť.
EDIT: Alebo označiť bunku, a nie len nájsť bunku ? Označiť bunku v neaktívnom liste snáď ani nejde. Neviem, potom asi takto.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 4 Then
Dim R As Long
On Error Resume Next
R = WorksheetFunction.Match(ActiveCell, Worksheets("Hárok2").Range("D1:D10"), 0)
Application.ScreenUpdating = False
If Err = 0 Then Application.Goto Worksheets("Hárok2").Range("D1:D10").Cells(R) Else Application.Goto Worksheets("Hárok2").Range("A1")
Application.Goto Target
Application.ScreenUpdating = True
End If
End Sub
Uložte si niekam vlastnosť TextBox1.ListIndex. To je Index (poradové číslo) vybranej položky. Ďalej si to už ľahko spracujete podľa potreby.
Tu máte príklad na Import/Export makro. Ale ako poriešiť ešte to upravenie diakritiky popravde neviem a ani sa mi nechce skúmať ...
Vyskúšajte toto
Voľný čas a ja sme momentálne nekompatibilný. A nevidím zatiaľ ani vyhľadovo nejaké zlepšenie.
Zatiaľ - Vy chcete :
-1 list sklad
-každý ďalší list ma iba 1 Tabuľku
...???
Prečo to musí byť formulár ? Podľa mňa je vhodnejší (ľahšia manipulácia) list na zadávanie, ako som Vám poslal.
Tak ako je to s ďalším spracovaním v ďalšom programe ? Vyžaduje sa mať data pod sebou, ako ste popísal v 1. príspevku, alebo vedľa seba ako ste poslal v 2. príspevku ?
Príklad ...
Filter neviem rozbehať na všetky riadky korektne. Snáď niekto poradí prečo. Inak vzorec či minimakro.
Čo myslíte pod pojmom "automatického posunu posuvníku" ? Pretože posuvník hýbe grafom (jeho konečnou hodnotou), a zároveň aj reaguje na priame zadanie konečnej hodnotu v C3. Tak skúste popísať, čo máte na mysli, a/alebo čo chcete so zošitom robiť, a čo za zobrazenie od neho očakávate.
Dajte k dispozícii nejaké dáta, nech máme na čom stavať. Pokiaľ ma pamäť neklame tak graf nevyhodnocuje hodnotu N/A. Teda zakomponujte do dát podmienku.
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.