Jedna z neustále sa opakujúcich otázok, ktorá bola už 1000 x zodpovedaná. Google poznáš?
Autorom doleuvedeného riešenia je pravdepodobne Tushar Mehta, ale na jeho stránkach som to teraz nenašiel, tak dávam link na niečo, čo som pred x rokmi videl u Tushara: http://fiveminutelessons.com/learn-microsoft-excel/use-index-lookup-multiple-values-list
@eLCHa:
sh.Protect Password:=heslo ?
Jedná sa o triviálnu úlohu, riešiteľnú kombináciou funkcií INDEX a POZVYHLEDAT. Vytvorenie vzorového súboru je ale tvoja úloha, ten za teba tvoriť nebudem.
169000 externých linkov je šialenosť
@ eLCha: opět jste zveřejnil něco co není Vaše bez odkazu odkud to máte a asi i bez souhlasu autora
On to ani autor uvedeného kódu nie je; sám to niekde splašil a dorobil tam akurát nejaké hlášky v češtine.
Inak, naprosto súhlasím s Vašim pohľadom na vec, bohužiaľ, ľudia si zvykli mať prístup k týmto veciam takpovediac zadarmo a za skutočne málo sú ochotní zaplatiť.
MS vo verzii office 2013 zabezpečenie súborov skutočne vylepšil a doteraz fungujúce "návody" už nefungujú.
Rozšíreným filtrom, v prílohe obrázok, ako filter nastaviť.
@Pavlus: Jinak ukončení makra lze např. na základě podmínky přes příkaz "Exit Sub"
To ovšem nezavoláš z iného makra.
Síce neviem, na čo to má akože slúžiť, ale budiž. V module:Option Explicit
Public Ukonci As Boolean
Sub DoKlikuNaTlacitko()
Ukonci = False
UserForm1.Show 0
Do Until Ukonci = True
DoEvents
Debug.Print Now() 'aby bolo vidiet, ze to nieco robi
Loop
End SubV kódovom okne formulára:Option Explicit
Private Sub CommandButton1_Click()
Ukonci = True
Unload Me
MsgBox "Makro ukoncene tlacitkom"
End Sub
Neexistuje jednoznačná odpoveď, určite existuje viacero možných riešení, ale to s MyArr funguje; pre viacej oblastí postupne vždy danú oblasť načítať do MyArr, skopírovať do cieľového umiestnenia a MyArr použiť následne pre načítanie dát z inej oblasti. Tak stále dokola.
MyArr som použil hlavne ako alternatívu ku Copy - PasteSpecial (values).
@eLCHa: chválim
ďalšou možnosťou je buď rozšírený filter, alebo ms query
To makro rozhodne nič nemaže. Zapisuje dáta do oblasti A9:F108 aktívneho listu zo súboru, ktorý zvolíš. Takže, pokiaľ ti akože niečo maže, tak zapíše do A9:F108 zo súboru, ktorý v tej samej oblasti na liste 1 neobsahuje žiadne dáta. Môže sa to potom javiť ako mazanie. Skontroluj si, či máš na liste 1 (Sheets(1)) v zdrojovom súbore v oblati A9:F108 nejaké data. Over si, či voláš správny list, z ktorého zamýšľaš data kopírovať.MyArr = wb.Sheets(1).[A9:F108]
Tu je kostra, zvyšok si snáď doladíš
Option Explicit
Sub Test()
Dim IsOpen As Boolean, MyArr As Variant, Msg As Byte, MySplit As Variant, wb As Workbook
With Application.FileDialog(msoFileDialogOpen)
.Title = "Prosim, vyberte subor s datami ku kopirovaniu"
.Show
.AllowMultiSelect = False
If .SelectedItems.Count = 0 Then
MsgBox "Nebol vybrany ziadny subor, niet co kopirovat"
Exit Sub
Else
Msg = MsgBox("Pre spracovanie vystupu ste zvolili subor " & .SelectedItems(1) & vbNewLine _
& "Chcete vystup spracovat skutocne na zaklade dat z tohoto suboru?", vbYesNo)
If Msg = 7 Then
MsgBox "Nepotvrdili ste vyber suboru, z ktoreho chcete vygenerovat vystup."
Exit Sub
End If
End If
Application.ScreenUpdating = False
MySplit = Split(.SelectedItems(1), "\")
MySplit = MySplit(UBound(MySplit))
For Each wb In Workbooks
If wb.Name = MySplit Then
IsOpen = True
Exit For
End If
Next wb
If IsOpen = False Then
Set wb = Workbooks.Open(.SelectedItems(1))
Else: Set wb = Workbooks(MySplit)
End If
End With
MyArr = wb.Sheets(1).[A9:F108]
If IsOpen = False Then wb.Close
Set wb = Nothing
ThisWorkbook.ActiveSheet.[A9:F108] = MyArr
Erase MyArr
Application.ScreenUpdating = True
End Sub
ne, nebude
Skutočne?
Než riešenie od Palaa odmietneš, tak sa nad ním aspoň trochu zamysli. Stačí totiž len nepatrne iný design kontingenčky a dostaneš pmn presne to, čo požaduješ. Mám za to, že sa ti jedná o výstup, nie o nejaké zaškrtávatko, ktoré ide pohodlne nahradiť práve pomocou slicers (chvíľu mi trvalo, čo myslel paloo slovom skicar, než mi došlo, že sa pravdepodobne jednalo o preklep). Vzhľadom k existencii slicers zaškrtávatka z tvojej čmáranice strácajú zmysel . Pokiaľ ale trváš na zaškrtávatkach, tak nemôžem slúžiť, páč vo svetle uvedeného by som to pokladal za škrabanie sa nožičkou za uškom.
V takýchto prípadoch si môžeš pomôcť vzorcom, viď príloha. Ako kritérium pre filter je použitá oblasť B1:B2. Nastav rozšírený filter podľa obrázka a sám sa môžeš presvedčiť, že to funguje i na tento prípad.
Inak, funguje i hviezdičková konvencia, takže stačí do kritérií v takom prípade napísať miesto:
Polsko
*Polsko*
V properties toho Comboboxu zapíšeš do ListFillRange adresu vrátane názvu listu, z ktorého chceš do komba ťahať hodnoty, t.j. niečo v tvare: List2!B2:B500
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.